2010-05-11 8 views
1

j'ai une question sur la façon de déclarer les points pour une texture sur un cubeposition texture dans opengl

être exactement je veux dire le:

glTexCoord2f(x.f, y.f); 

pour la face avant, mes travaux de déclaration :

glBegin(GL_POLYGON); //Vorderseite 
     glNormal3f(0.0f, 0.0f, 1.0f);//normale für vorderseite 

    glTexCoord2f(0.0f, -1.f); 
    glVertex3f(-fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f); 

    glTexCoord2f(1.f, -1.f); 
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f); 

    glTexCoord2f(1.f, 0.0f); 
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f); 

    glTexCoord2f(0.0f, 0.0f); 
    glVertex3f(-fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f); 
    glEnd(); 

mais pour le côté droit, il ne fonctionne pas, je suggère que j'ai besoin d'autres paramètres, pour glTexCoord2f, mais je ne sais pas sorcière un.

glBegin(GL_POLYGON); //Rechte Seite 

    glNormal3f(1.0f, 0.0f, 0.0f); //normale für rechte seite 

    glTexCoord2f(0.0f, -1.f); 
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f); 

    glTexCoord2f(1.0f, -1.f); 
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,-fSeitenL/0.0f); 

    glTexCoord2f(1.0f, 0.0f); 
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,-fSeitenL/0.0f); 

    glTexCoord2f(0.0f, 0.0f); 
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/0.0f); 
    glEnd(); 

après tout je ferme la "texture-déclaration avec"

glDisable(GL_TEXTURE_2D); 

merci à l'avance

modifier:

le frontside est représentée par l'image, l'autre côté ISN pas montré, même pas le "cube". pour l'instant je viens d'utiliser une image qui est noire avec des espaces blancs aléatoires, donc la position exacte n'est pas très importante, malgré que je suis très interessé comment régler le droit glTexCoord2f.

Répondre

0

Puisque vous utilisez des coordonnées de texture négatives (ou vraiment quelque chose en dehors de la plage 0..1), vous devez vous assurer que votre mode d'enveloppement de texture est configuré pour se répéter.

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 

Si ceux-ci sont mis à GL_CLAMP place, toute valeur inférieure à 0 sera réglé sur 0 et une valeur supérieure à 1 sera mis à 1. Mais puisque vous dites que la première partie de vos textures modèle correctement , ce n'est probablement pas votre problème.

Le prochain problème le plus probable est l'éclairage. Si vous éteignez l'éclairage avec glDisable(GL_LIGHTING); le modèle entier apparaît-il? Si c'est le cas, vous devez vous assurer d'avoir une lumière face à la partie problématique de votre modèle, ou ajouter un composant ambiant à votre lumière.

+0

avec glDisable (GL_LIGHTING); il y a juste un côté montré – Tyzak

0

Comment cela ne fonctionne-t-il pas exactement?

Si la texture n'apparaît pas ou si la mauvaise texture est appliquée, cela signifie que vous devez définir une texture différente avec glBindTexture().

Si la texture est mal alignée, vous devez vous assurer que les sommets partagés entre les deux faces ont la même coordonnée de texture.

+0

la face avant est représentée, avec la texture, l'autre côté n'est pas représenté, pas même la "masse" ou "cubeside" – Tyzak