PDA

View Full Version : glTexGenf - Problem .. the old story ..:(



trunxx
04-19-2004, 02:24 PM
Hi there.
I know there are some posts out there with this topic, but nevertheless i cannot solve my problems.

I have a simple cube which is made of triangles.
I want to map for each surface a single texture.

So i started with this.

glBindTexture(GL_TEXTURE_2D,texture[texture_carrier->texture_id+1]);
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_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
Generation the Texture works good, i've already checked it.

Then, just bevor the drawing routines do their job, i bind the textures for each surface :

glTexGenf(GL_S,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEA R );
glTexGenf(GL_T,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEA R );

GLfloat sPlane[4] = { 1.0, 0.0, 0.0, 0.0 };
GLfloat tPlane[4] = { 0.0, 0.0, 1.0, 0.0 };
glTexGenfv(GL_S, GL_OBJECT_PLANE, sPlane);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tPlane);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);now the automatic generation of the textures should be engaged...
>>some drawings here ...


glBegin(GL_TRIANGLES);
glVertex3f(dummy1->tr_p3->x,dummy1->tr_p3->y,-dummy1->tr_p3->z);
glVertex3f(dummy1->tr_p2->x,dummy1->tr_p2->y,-dummy1->tr_p2->z);
glVertex3f(dummy1->tr_p1->x,dummy1->tr_p1->y,-dummy1->tr_p1->z);
glEnd(); stop the generic process:


glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);Uhh .. there are alway only 2 sides mapped with the correct Textures. All other sides are blank.
It depends on the Matrix (sPlane / tPlane) which sides will be mapped.

How can i draw the cube with alle 6 Surfaces texured?

thanks.

jwatte
04-19-2004, 05:14 PM
I suggest the moderator moves this thread to the beginner's section.

Regarding your actual question, I would suggest just issuing texture coordinates using glTexCoord2f() before you issue each vertex, rather than trying to use texture coordinate generation to do it. The reason you get single-colored sides is that the different faces have different orientation, yet you try to make a single set of coordinates work for all of them. If MIP mapping is on, the other faces will get stretched in one direction, which may choose a very high MIP map level (i e, a single pixel).