Updating a texture in OpenGL with glTexImage2D

我们两清 提交于 2019-11-28 16:21:51

问题


Are glTexImage2D and glTexSubImage2D the only ways to pass a buffer of pixels to a texture?

At the moment I use in a setup function glTexImage2D passing null as the buffer, and then on the render loop I call glTexSubImage2D with the new buffer data on each iteration.

But knowing that the texture will not change any property such as the dimensions, is there any more efficient way to pass the actual pixel data to the rendering texture?


回答1:


In modern OpenGL there are 4 different methods to update 2D textures:

  1. glTexImage2D - the slowest one, recreates internal data structures.

  2. glTexSubImage2D - a bit faster, but can't change the parameters (size, pixel format) of the image.

  3. Render-to-texture with FBO - update texture entirely on GPU, very fast. Refer to this answer for more details: https://stackoverflow.com/a/10702468/1065190

  4. Pixel Buffer Object PBO - for fast uploads from CPU to GPU, not supported (yet) on OpenGL ES.



来源:https://stackoverflow.com/questions/9863969/updating-a-texture-in-opengl-with-glteximage2d

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!