J'essaie de comprendre le mappage de texture en OpenGL et je n'arrive pas à faire fonctionner un exemple simple.
Le polygone est en train d'être dessiné, bien qu'il ne soit pas texturé mais juste d'une couleur unie. De plus, le bitmap est chargé correctement dans sprite1[] car j'utilisais avec succès glDrawPixels jusqu'à présent.
J'utilise glGenTextures pour obtenir mon nom de tex, mais je remarque que cela ne change pas texName1 ; ce GLuint est ce à quoi je l'initialise, même après l'appel à glGenTextures...
J'ai activé GL_TEXTURE_2D.
Voici le code :
GLuint texName1 = 0;
glGenTextures(1, &texName1);
glBindTexture(GL_TEXTURE_2D, texName1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, sprite1[18], sprite1[22], 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, &sprite1[54]);
glColor3f(1, 1, 0);
glBindTexture(GL_TEXTURE_2D, texName1);
glBegin(GL_QUADS);
glTexCoord2f (0.0, 0.0);
glVertex3f (0.0, 0.0, -5.0f);
glTexCoord2f (1.0, 0.0);
glVertex3f (.5, 0.0, -5.0f);
glTexCoord2f (1.0, 1.0);
glVertex3f (.5, .5, -5.0f);
glTexCoord2f (0.0, 1.0);
glVertex3f (0.0, .5, -5.0f);
glEnd();
MISE À JOUR : Je suis perdu. Voici tout ce que j'ai essayé :
-
Il s'avère que j'initialisais ma texture avant que l'OGL ne soit initialisé. La texture est initialisée (glGenTextures->glTexImage2D) dans un constructeur de classe et dessinée (glBegin->glEnd) dans une fonction membre qui est appelée à chaque image. genTextures semble fonctionner correctement maintenant et j'obtiens un nom de 1.
-
Toutes les combinaisons possibles de GL_RGBA8, GL_BGRA_EXT (GL_BGRA ne fonctionne pas sur mon système ; j'ai besoin du _EXT), et j'ai même supprimé le canal alpha du bitmap et essayé toutes les combinaisons de GL_RGB, GL_BGR_EXT, etc etc. Sans succès.
-
J'ai essayé de créer un bitmap de manière procédurale et de l'utiliser.
-
Assurez-vous que GL_COLOR_MATERIAL n'est pas activé.
-
Changement de la taille des bitmaps en 32x32.
-
J'ai essayé glTexEnvi au lieu de glTexEnvf.