Part of an app I’m making centers around some textures which I plan to modify fairly often.
At the moment, I’m using glTexImage2D and creating the textures from an array of bytes (data) with the following code :
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glGenTextures(1, &generic_texture);
glBindTexture(GL_TEXTURE_2D, generic_texture);
// etc...
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, width, height,0, GL_RGBA, GL_UNSIGNED_BYTE,data);
I’m not sure of the underlying mechanics of glTexImage2D but I assume that part of it is that it copies the (processed?) array into video memory.
The problem is, I’m planning to modify the texture fairly frequently : writing the changes into the array, and then creating a new texture and copying the whole thing to the video memory seems a little redundant and slow - especially if I’m modifying a large texture or a large amount of textures. Really, I’m looking for a way of directly modifying the textures in memory - or at least, something a little less redundant the the method I’m planning to use.
I’m not really familiar with OpenGl though, I’m pretty much a full blown beginner - I’ve been working off code examples - so I don’t know if this kind of thing is impossible, if there’s a function which caters specifically to this kind of thing, if I assumed wrong, etc… can anyone help me out here, give me some pointers as to what I should do / be doing differently?