OpenGL:只模糊纹理的一部分;使用顶点着色器可以加速吗?

OpenGL: blur only one part of the texture; can using vertex shader speed up?

假设有一个纹理:6000x6000

我只需要模糊一部分,比如说中心矩形 100x100

如果我用顶点着色器把感兴趣的区域放在这个中心矩形上,通过输入大纹理中的4个点的坐标和它们对应的纹理坐标,我认为片段着色器只处理中心的像素矩形。

据我了解,普通 GPU 无法真正同时处理 6000x6000 像素;它将分为几个部分。 现在有了 100x100,可以同时处理所有像素,所以会更快。

我的理解正确吗?

你可以做一个 "render to texture",这样你就可以使用你的 "vertex shader" 到 select 你想要模糊的区域......然后你的片段着色器将只应用模糊在那个地区。

您的理解似乎是正确的:考虑到 GPU 只会花费精力处理顶点着色器确定的区域内的片段,因此如果您将顶点设置为目标的子集[就像屏幕一样,您的目标可能是一个纹理,通过帧缓冲区],那么您的 GPU 将只处理所需的区域。