Note that there are some explanatory texts on larger screens.

plurals
  1. POOpenGL Multiple Textures Loading Error
    text
    copied!<p>I have a Model2D class which contains the following:</p> <pre><code>class Model2D { public: //it's private, but I'm shortening it here unsigned char* bitmapImage; unsigned int textureID; int imageWidth, imageHeight; void Load(char* bitmapFilename); } void Model2D::Load(char* bitmapFilename) { ifstream readerBMP; readerBMP.open(bitmapFilename, ios::binary); //I get the BMP header and fill the width, height bitmapImage = new GLubyte[imageWidth * imageHeight * 4]; //Loop to read all the info in the BMP and fill the image array, close reader glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(1, &amp;textureID); glBindTexture(GL_TEXTURE_2D, textureID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imageWidth, imageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, bitmapImage); } void Model2D::Draw() { glBegin(GL_QUADS); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); glBindTexture(GL_TEXTURE_2D, textureID); float texScale = 500.0; //this is just so I don't have to resize images glTexCoord2f(0.0, 0.0); glVertex3f(-(imageWidth / texScale), -(imageHeight / texScale), 0.0); glTexCoord2f(0.0, 1.0); glVertex3f(-(imageWidth / texScale), (imageHeight / texScale), 0.0); glTexCoord2f(1.0, 1.0); glVertex3f((imageWidth / texScale), (imageHeight / texScale), 0.0); glTexCoord2f(1.0, 0.0); glVertex3f((imageWidth / texScale), -(imageHeight / texScale), 0.0); } </code></pre> <p>And in my main loop, I have:</p> <pre><code>Model2D spritest; spritest.LoadFromScript("FirstBMP.bmp"); spritest.Z(-5); spritest.X(-2); Model2D spritest2; spritest2.LoadFromScript("SecondBMP.bmp"); spritest2.X(+2); spritest2.Z(-6); //... //main loop spritest.Draw(); spritest2.Draw(); </code></pre> <p>While debugging it seems to be working fine, the addresses of the bitmaps are different, and so are the textureIDs that OpenGL generates, and they're being called correctly as well, and the X, Y and Z positions are also correct while debugging, but for some unknown reason, <strong>spritest</strong> image data is being overwritten by <strong>spritest2</strong>. Even if I don't call Draw() from <strong>spritest2</strong>, the image is being displayed instead of <strong>spritest</strong>.</p> <p>What could be causing this?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload