如果我使用一个glTexImage2D调用来使用这样的缓冲区创建一个纹理:
glTexImage2D(GL_TEXTURE_2D /* target*/,
0 /* level */,
GL_RGBA /* internal format */,
width /* w */,
height /* h */,
0 /* border */,
GL_RGBA /* format (RGBA 4)*/,
GL_UNSIGNED_BYTE /* type */,
buffer /* pixel buffer */);我可以修改缓冲区并期望它的纹理发生变化吗?
或者在调用之后,纹理是否最终确定?
发布于 2011-07-16 20:35:21
不,OpenGL将创建它自己的纹理副本,因此如果不来回复制它,就不能修改它(但这也意味着您可以重用或释放缓冲区。
发布于 2011-07-16 21:19:33
如果您想要更改纹理的一部分,您将经常使用glTexSubImage2D。请注意,该函数期望新数据是连续的;因此,如果您只更改了纹理中间的一个小方格,那么在原始缓冲区中进行更改并不是最好的方法,因为这样您就必须为您更改的行发送所有像素,而不是仅发送受影响的列。
https://stackoverflow.com/questions/6720051
复制相似问题