Basically, see the title: for whatever reason, I load a texture into OpenGL, bind it, draw a quad with texture coordinates specified, and the quad remains totally white regardless of what the texture is.
I have made sure that GL_TEXTURE_2D is enabled. I have verified (using glGetTexImage) that the Texture has the correct data in it (or, if not the correct data, data that should be visible, as the pixels have different values).
My glTexture2D function is called as follows:
glTexImage2D(GL_TEXTURE_2D, 0, pixelFormat, this->width, this->height, 0, pixelFormat, GL_UNSIGNED_BYTE, &(pixelData[0]));
This is where pixel format is either GL_RGBA or GL_RGB (according to pixel depth), and pixelData is the array of pixels. I verified that pixelFormat and pixelData and width and height have within them the correct values. Note that pixelData is a std::vector.
I bind the texture as such:
glActiveTexture(GL_TEXTURE0 + this->multiTexNumber);
glBindTexture(GL_TEXTURE_2D, this->texID);
For the purposes of my testing, this->multiTexNumber = 0;
Have I done something wrong here? Is the problem elsewhere?
EDIT: via very thorough checking, I have ensured that OpenGL doesn't throw any errors. The problem persists.
pixelFormat
These are not the same thing! There is a big difference between the internal image format and the pixel transfer format. I really wish the OpenGL ARB would have just made two separate sets of enums so people wouldn't be confused. \$\endgroup\$ – Nicol Bolas May 4 '12 at 2:55