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
In modern OpenGL
there are 4 different methods to update 2D textures:
glTexImage2D
- the slowest one, recreates internal data structures.
glTexSubImage2D
- a bit faster, but can't change the parameters (size, pixel format) of the image.
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
Pixel Buffer Object PBO
- for fast uploads from CPU to GPU, not supported (yet) on OpenGL ES.