2010-04-14 10 views
0

Bonjour je crée un cube et je veux d'un côté une texture.opengl texture cube C++

glEnable(GL_TEXTURE_2D); 
    glBindTexture(GL_TEXTURE_2D, texture[0]); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filterMode); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filterMode); 

     glBegin(GL_POLYGON); //Vorderseite 
    glColor4f(1.0f,0.0f,0.0f,1.0f); //ROT 
    glVertex3f(-fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f); 
    glColor4f(1.0f,1.0f,0.0f,1.0f); //GELB 
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f); 
    glColor4f(1.0f,1.0f,1.0f,1.0f); //WEISS 
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f); 
    glColor4f(1.0f,0.0f,1.0f,1.0f); //MAGENTA 
    glVertex3f(-fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f); 
    glEnd(); 

    glDisable(GL_TEXTURE_2D); 

mais je ne peux pas voir ma texture, qu'est-ce que je me suis trompé? merci.

Répondre

2

d'abord de tout cela ne semble pas un cube, mais juste un quad, un cube est composé de 6 différents quadriceps .. (et vous pouvez utiliser GL_QUADS plutôt que GL_POLYGON.

chose est deuxième que vous chargez la texture mais pas la plaquant aux sommets. vous devez fournir les coordonnées de la carte comment la texture doit être bien sur le quad. vous pouvez le faire en utilisant

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); 
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); 

l'exemple est tiré de NEHE guide OpenGL et je suggère vraiment que vous jetiez un coup d'œil car il est très bien expliqué: http://nehe.gamedev.net

Vérifiez tutoriel 6 sur le mappage de texture: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=06

4

Vous n'avez pas fourni de coordonnées de texture. Vous devez émettre un appel à glTexCoord (la variante 2f étant la plus couramment utilisée) qui indique une partie de la texture à laquelle le vecteur correspond, avant l'appel glVertex correspondant.

Sinon, OpenGL n'a aucune idée de la façon dont la texture doit être collée sur les polygones.