Hi i’m loading in one 256 x 256 texture into the card with glTexImage2D() and then i create a texture object with 3 IDs that i bind with three 64 x 64 subtextures of the large texture but its not working or i’m doing something wrong can someone have a look and tell me if this is correct please cheers.
This is from the init() method :
gl.glEnable(GL.GL_TEXTURE_2D);
gl.glShadeModel(GL.GL_SMOOTH);
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE);
gl.glEnable(GL.GL_BLEND);
gl.glPixelStorei(GL.GL_UNPACK_SWAP_BYTES, GL.GL_TRUE);
gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, 4, 256, 256, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, img);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
gl.glGenTextures(3, textureIDs);
gl.glBindTexture(GL.GL_TEXTURE_2D, textureIDs[0]);
gl.glTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 64, 64, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, img);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
gl.glBindTexture(GL.GL_TEXTURE_2D, textureIDs[1]);
gl.glTexSubImage2D(GL.GL_TEXTURE_2D, 0, 64, 0, 64, 64, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, img);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
gl.glBindTexture(GL.GL_TEXTURE_2D, textureIDs[2]);
gl.glTexSubImage2D(GL.GL_TEXTURE_2D, 0, 128, 0, 64, 64, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, img);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
/////////////////////////////////////////////////////////////////////////////
And this is part of the display method to draw one of the sub textures onto a quad:
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glBindTexture(GL.GL_TEXTURE_2D, textureIDs[currentTexID]);
gl.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
gl.glBegin(GL.GL_QUADS);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex2i(0, 0);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex2i(0, 64 - 1);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex2i(64 - 1, 64 - 1);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex2i(64 - 1, 0);
gl.glEnd();
gl.glFlush();