对纹理进行增量更新的最佳方法是什么?(渲染到纹理)

4 c++ opengl

我想在OpenGL中渲染一个纹理,但是逐渐改变纹理.

这是我想象的过程:

  • 清除颜色和glViewport()到纹理大小
  • 绘制原始纹理(glOrtho或其他东西),如何以完美的质量复制原始图案
  • 绘制增量变化
  • 再次清除,将视口设置为屏幕大小
  • 绘制场景和翻转

有没有更好的方法来做到这一点?

Chr*_*ica 5

你有两个选择.如果你的硬件不支持FBO,你必须像你写的一样.要绘制原始纹理,只需使用[0,1]纹理坐标绘制屏幕大小的四边形.确保使用GL_NEAREST过滤模式和GL_CLAMP_TO_EDGE包装模式,以获得图像的精确副本.然后在其上绘制增量更改.完成后,您可以通过以下方式从帧缓冲区获取纹理glCopyTexSubImage2D.

当您的硬件支持FBO时,您可以获得更高的效率.在这种情况下,将纹理附加到FBO并渲染到其中.这样,您可以直接渲染到纹理中,无需复制.您也不需要复制原始纹理,只是不清除帧缓冲区(纹理),并在前一个数据的顶部渲染.阅读有关framebuffer对象的一些介绍性资料以获取更多信息.