Skip to main content
gamedev.net
🔒 Locked

Texturing Problem

Started by celestialVoid Dec 29, 2002 at 4:16 PM 1 replies 1.1k views
Original Post
celestialVoid
celestialVoid
Hi, I''m dealing with a problem - I have a rotating cube and I want to apply a different texture for every side (face) of it. The problem is with glBindTexture() - if I bind only one texture in my init function, everything works ok; but if I use more glBindTexture() functions it doesn''t work - if I use them in my init function (which''s called only once) a last binded texture is applied to a cube (that''s normal, but ->). But if I use glBindTexture() in my render function, everything goes wrong - it doesn''t work; the cube isn''t textured at all (it has currently selected color). Here''s the code, can anyone help and tell what''s wrong, please? ---------------------------------------------------------------- BITMAPINFOHEADER BMP1_Info; BITMAPINFOHEADER BMP2_Info; unsigned char *BMP1_Data; unsigned char *BMP2_Data; unsigned int Tex_Object [2]; float rot; void InitGL () { glClearColor (0.0f, 0.0f, 0.0f, 0.0f); glClearDepth (1.0f); glShadeModel (GL_SMOOTH); glEnable (GL_DEPTH_TEST); glDepthFunc (GL_LEQUAL); glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glEnable (GL_CULL_FACE); glFrontFace (GL_CCW); BMP1_Data = LoadBMP ("Data/tex1.bmp", &BMP1_Info); BMP2_Data = LoadBMP ("Data/tex2.bmp", &BMP2_Info); glEnable (GL_TEXTURE_2D); glGenTextures (2, Tex_Object); glBindTexture (GL_TEXTURE_2D, Tex_Object [0]); glBindTexture (GL_TEXTURE_2D, Tex_Object [1]); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, BMP1_Info.biWidth, BMP1_Info.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, BMP1_Data); glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, BMP2_Info.biWidth, BMP2_Info.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, BMP2_Data); } void RenderGL () { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity (); glTranslatef (0.0f, 0.0f, -10.0f); glScalef (2.0f, 2.0f, 2.0f); glRotatef (rot, 1.0f, 0.0f, 0.0f); glRotatef (rot, 0.0f, 1.0f, 0.0f); glRotatef (rot, 0.0f, 0.0f, 1.0f); // front face /// if I write glBindTexture in render function, cube isn''t textured glBindTexture (GL_TEXTURE_2D, Tex_Object [0]); glBegin (GL_QUADS); glTexCoord2f (1.0f, 0.0f); glVertex3f (1.0f, -1.0f, 1.0f); glTexCoord2f (1.0f, 1.0f); glVertex3f (1.0f, 1.0f, 1.0f); glTexCoord2f (0.0f, 1.0f); glVertex3f (-1.0f, 1.0f, 1.0f); glTexCoord2f (0.0f, 0.0f); glVertex3f (-1.0f, -1.0f, 1.0f); glEnd (); // back face glBindTexture (GL_TEXTURE_2D, Tex_Object [1]); glBegin (GL_QUADS); glTexCoord2f (0.0f, 1.0f); glVertex3f (1.0f, 1.0f, -1.0f); glTexCoord2f (0.0f, 0.0f); glVertex3f (1.0f, -1.0f, -1.0f); glTexCoord2f (1.0f, 0.0f); glVertex3f (-1.0f, -1.0f, -1.0f); glTexCoord2f (1.0f, 1.0f); glVertex3f (-1.0f, 1.0f, -1.0f); glEnd (); // left face glBindTexture (GL_TEXTURE_2D, Tex_Object [0]); glBegin (GL_QUADS); glTexCoord2f (1.0f, 0.0f); glVertex3f (-1.0f, -1.0f, 1.0f); glTexCoord2f (1.0f, 1.0f); glVertex3f (-1.0f, 1.0f, 1.0f); glTexCoord2f (0.0f, 1.0f); glVertex3f (-1.0f, 1.0f, -1.0f); glTexCoord2f (0.0f, 0.0f); glVertex3f (-1.0f, -1.0f, -1.0f); glEnd (); // right face glBindTexture (GL_TEXTURE_2D, Tex_Object [1]); glBegin (GL_QUADS); glTexCoord2f (1.0f, 0.0f); glVertex3f (1.0f, -1.0f, -1.0f); glTexCoord2f (1.0f, 1.0f); glVertex3f (1.0f, 1.0f, -1.0f); glTexCoord2f (0.0f, 1.0f); glVertex3f (1.0f, 1.0f, 1.0f); glTexCoord2f (0.0f, 0.0f); glVertex3f (1.0f, -1.0f, 1.0f); glEnd (); // bottom face glBindTexture (GL_TEXTURE_2D, Tex_Object [0]); glBegin (GL_QUADS); glTexCoord2f (1.0f, 0.0f); glVertex3f (1.0f, -1.0f, -1.0f); glTexCoord2f (1.0f, 1.0f); glVertex3f (1.0f, -1.0f, 1.0f); glTexCoord2f (0.0f, 1.0f); glVertex3f (-1.0f, -1.0f, 1.0f); glTexCoord2f (0.0f, 0.0f); glVertex3f (-1.0f, -1.0f, -1.0f); glEnd (); // top face glBindTexture (GL_TEXTURE_2D, Tex_Object [1]); glBegin (GL_QUADS); glTexCoord2f (1.0f, 0.0f); glVertex3f (1.0f, 1.0f, 1.0f); glTexCoord2f (1.0f, 1.0f); glVertex3f (1.0f, 1.0f, -1.0f); glTexCoord2f (0.0f, 1.0f); glVertex3f (-1.0f, 1.0f, -1.0f); glTexCoord2f (0.0f, 0.0f); glVertex3f (-1.0f, 1.0f, 1.0f); glEnd (); rot += 0.2f; if (rot >= 360.0f) { rot = 0.0f; } }
Raduprv
Raduprv
Hmm try to do this, see if if works:

glBindTexture (GL_TEXTURE_2D, Tex_Object [0]);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, BMP1_Info.biWidth, BMP1_Info.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, BMP1_Data);

glBindTexture (GL_TEXTURE_2D, Tex_Object [1]);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, BMP2_Info.biWidth, BMP2_Info.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, BMP2_Data);

Height Map Editor | Eternal lands
celestialVoid
celestialVoid
Thanks alot!! It works now... Strange that I didn''t figure out that myself... thanks!

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.