Changing pixels on a texture
I have a pretty good 2D OpenGL (ortho mode) engine working now with 32-bit RGBA png texture support. My question is -- if I want to be able to change one pixel in a texture, or create an empty texture and manually write pixel data to it, how would I do that (or what tutorials out there have examples of that).
Let's say you draw your whole screen and you want to make a copy from it the before sending the buffer use this
glReadPixels(0,0,XSizeofTheCopy,YSizeofTheCopy,GL_RGBA,GL_UNSIGNED_BYTE,ImagePtr);
this mean you'll make a copy from your scene to an array
unsigned char *ImagePtr=new unsigned char[XSizeofTheCopy*YSizeofTheCopy*4];
bye
glReadPixels(0,0,XSizeofTheCopy,YSizeofTheCopy,GL_RGBA,GL_UNSIGNED_BYTE,ImagePtr);
this mean you'll make a copy from your scene to an array
unsigned char *ImagePtr=new unsigned char[XSizeofTheCopy*YSizeofTheCopy*4];
bye
Just change the pixels in the array you have your texture stored in, then:
glBind(GL_TEXTURE_2D, myTexture); // bind your textureglTexImage2D(GL_TEXTURE_2D, 0, colorBytes, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, myTextureData); // and update the copy on the graphics card
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement