OpenGL:只模糊纹理的一部分;可以使用顶点着色器加速吗?
Posted
技术标签:
【中文标题】OpenGL:只模糊纹理的一部分;可以使用顶点着色器加速吗?【英文标题】:OpenGL: blur only one part of the texture; can using vertex shader speed up? 【发布时间】:2016-01-27 18:56:52 【问题描述】:假设有一个纹理:6000x6000
我只需要模糊一个部分,比如说中心矩形 100x100
如果我用顶点着色器把感兴趣的区域放到这个中心矩形上,通过输入4个点的坐标和它们在大纹理中对应的纹理坐标,我认为片段着色器只处理中心矩形中的像素。
据我了解,普通 GPU 无法真正同时处理 6000x6000 像素;它将分为几个部分。 现在有了 100x100,可以同时处理所有像素,所以速度会更快。
我的理解正确吗?
【问题讨论】:
【参考方案1】:您可以执行“渲染到纹理”,因此您可以使用“顶点着色器”来选择要模糊的区域...然后您的片段着色器将仅在该区域应用模糊。
您的理解似乎是正确的:考虑到 GPU 只会花费精力处理由顶点着色器确定的区域内的片段,因此如果您将顶点设置为目标的子集 [就像屏幕一样,您的目标可能是纹理,通过帧缓冲区],那么您的 GPU 将只处理所需的区域。
【讨论】:
谢谢。我对这个问题的所有理解都正确吗?你说的是我的理解正确吗? 是的,如果我对你的理解是正确的,是的……你的理解是正确的 那你知道在GPU中使用OpenGL可以同时处理多少像素吗?你能给我一些来源的链接吗?谢谢。 它甚至可能是 100 万个并行甚至更多......它不依赖于 OpenGL 本身,而是依赖于你的 GPU。我建议的关于 OpenGL 的非常快速的教程在这里:duriansoftware.com/joe/… 我真的推荐! 谢谢。实际上,我编写了很多片段着色器。但我不熟悉GPU的架构。我一直在搜索源以确定 GPU 设备中并行单元的实际数量。你能给我一个链接吗?我得到了一些关于使用 CUDA 的并发单元计数的信息,例如GTX 580 有 24,576 个线程。当它在 OpenGL 上工作时,不确定 GPU 上的数字。 24,576 个线程并不令人印象深刻。以上是关于OpenGL:只模糊纹理的一部分;可以使用顶点着色器加速吗?的主要内容,如果未能解决你的问题,请参考以下文章