2011-06-01 101 views
5

它好像glTexSubImage2D需要一个指针质感十足缓冲区。如何通过仅提供指向更新区域的指针而不是整个缓冲区来对纹理进行部分更新?如何更新纹理的一部分?

例如,如果我想要将第二个图像叠加到现有纹理上,而不是将图像数据复制到我的纹理缓冲区,然后调用glTexSubImage2D,我只需要让opengl更新纹理而不必在RAM位置之间复制数据。

回答

7

你从哪里得到的是glTexSubImage2D需要一个指向质感十足缓存的概念?

从上面链接的文档,这在我看来,最后一个参数是指向只包含新数据的缓冲区。其他参数是用来指定要更新哪些纹理对象(只是一个OpenGL标识符,不需要指向原始数据的指针)以及用于复制新数据的偏移量和大小。

TL; DR:glTexSubImage2D需要一个指针到新的数据和不正是你认为它应该在你的例子:)

+0

感谢您的答复。我实际上发现我的问题是我在一个单独的线程中执行纹理更新,导致问题..试图找出如何通过现在..再次感谢! – gamedynamix 2011-06-01 10:49:39

+0

不客气!对于OpenGL和多线程,这个问题可能会有所帮助:http://stackoverflow.com/questions/4567296/opengl-and-threading – 2011-06-01 10:53:20