如何从一张纹理复制像素到另一张纹理?
我找到了一些方法。
例如,有一个方法 glCopyImageSubData()
,但我的目标版本是OpenGL 2.1,所以我不能使用它。
此外,由于性能非常重要, glGetTexImage2D()
不是一个选择。
由于我正在将视频帧处理为纹理,因此我必须每秒进行30-60次复制。
我发现的可用选项如下:
- 为源纹理创建FBO,并使用
glCopyTexSubImage2D()
将其复制到目标纹理。 - 为源纹理和目标纹理创建FBO,并将FBO合并。
- 为目标纹理创建FBO,并将源纹理渲染到FBO中。
您可以忽略创建FBO的成本,因为FBO只会被创建一次。
请不要只回答“这取决于情况,请自行测试”之类的内容。 我不仅针对一种GPU。如果情况有所不同,请告诉我依据是什么。
此外,由于很难测量OpenGL调用的时间,因此我想知道的不是定量结果。我需要一些关于哪种方法应该避免的建议。
如果您知道更好的复制纹理的方法,请让我也知道。
感谢您的阅读。