Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 如何更新纹理的一部分?_Opengl - Fatal编程技术网

Opengl 如何更新纹理的一部分?

Opengl 如何更新纹理的一部分?,opengl,Opengl,似乎glTexSubImage2D需要指向完整纹理缓冲区的指针。如何仅提供指向更新区域而不是整个缓冲区的指针来对纹理进行部分更新 例如,如果我想将第二个图像覆盖到现有纹理上,而不是将图像数据复制到我的纹理缓冲区中,然后调用glTexSubImage2D,我只需要让opengl更新纹理,而不必在RAM位置之间复制数据。你从哪里得到需要指向完整纹理缓冲区的指针的概念 从上面链接的文档中,我觉得最后一个参数是指向只包含新数据的缓冲区的指针。其他参数是用于指定要更新的纹理对象(只是OpenGL标识符,不

似乎glTexSubImage2D需要指向完整纹理缓冲区的指针。如何仅提供指向更新区域而不是整个缓冲区的指针来对纹理进行部分更新


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

你从哪里得到需要指向完整纹理缓冲区的指针的概念

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


TL;DR:glTexSubImage2D获取指向您的新数据的指针,并完全按照您在示例中认为应该执行的操作:)

感谢您的回复。我实际上发现我的问题是,我在一个单独的线程中进行纹理更新,这导致了问题。。现在就想办法克服这一点。。再次感谢!不客气!关于OpenGL和多线程,这个问题可能会有帮助: