我想在OpenGL中渲染一个纹理,但是会逐渐改变纹理。
以下是我想象的过程:
有更优化的方法吗?
答案 0 :(得分:5)
你有两个选择。如果你的硬件不支持FBO,你必须像你写的一样。要绘制原始纹理,只需使用[0,1]纹理坐标绘制屏幕大小的四边形。确保使用GL_NEAREST
作为过滤模式,使用GL_CLAMP_TO_EDGE
作为包装模式,以获得图像的精确副本。然后在其上绘制增量更改。完成后,您可以通过glCopyTexSubImage2D
。
当您的硬件支持FBO时,您可以获得更高的效率。在这种情况下,将纹理附加到FBO并渲染到其中。这样,您可以直接渲染到纹理中,无需复制。您也不需要复制原始纹理,只是不清除帧缓冲区(纹理),并在前一个数据的顶部渲染。请阅读some introductory material on framebuffer objects以获取更多信息。