Einfache OpenGL-textur-map nicht funktioniert?

Ich versuche, herauszufinden, texture mapping in OpenGL und ich kann nicht ein einfaches Beispiel, um zu arbeiten.

Das polygon wird gezeichnet, wenn es nicht strukturiert, sondern nur eine Feste Farbe. Auch die bitmap geladen wird korrekt in sprite1[] wie ich war erfolgreich mit glDrawPixels bis jetzt.

Benutze ich glGenTextures, um meine tex-Namen, aber ich merke, es ändert sich nicht texName1; diese GLuint ist, was ich initialisieren, auch nach dem Aufruf von glGenTextures...

Habe ich aktiviert GL_TEXTURE_2D.

Hier ist der 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();

UPDATE:
Ich bin an einem Verlust. Hier ist alles, was ich versucht habe:

  1. Stellt sich heraus, ich war der Initialisierung meiner textur vor OGL initialisiert wurde. Die textur ist initialisiert (glGenTextures->glTexImage2D) in einer Klasse-Konstruktor und gezeichnet (glBegin->glEnd) in einer member-Funktion in jedem Bild aufgerufen. genTextures scheint zu funktionieren jetzt richtig und ich bin immer ein name des 1.

  2. Jede mögliche Kombination von GL_RGBA8, GL_BGRA_EXT (GL_BGRA funktioniert nicht auf meinem system, ich brauche das _EXT), und ich selbst, entfernt den Alphakanal aus der bitmap und versucht, alle Kombinationen von GL_RGB, GL_BGR_EXT, etc etc. Kein Glück.

  3. Versucht prozedural erstellen einer bitmap verwendet wird,

  4. Sicher GL_COLOR_MATERIAL nicht aktiviert ist.

  5. Geändert bitmap-Größe auf 32x32.

  6. Versucht glTexEnvi statt glTexEnvf.

  • wenn texName1 ist übrigen 0 nach glGenTextures Sie sollten überprüfen, Ihre Fehler Bedingungen...
  • Ist die Breite & height gespeichert, wie byte oder int in sprite1[]?
  • Breite und Höhe werden als byte little endian. Ich habe sprite1[18] und sprite1[22] erfolgreich vor, mit glDrawPixels; Sie sind korrekt. Die bitmap wird nur 29x20 Pixel, damit es funktioniert.
  • Auch, wie kann ich prüfen, ob Fehlerzustände? Aus den Referenz-Seiten, die ich nicht sehe, dass glGenTextures Fehler generiert, das nützlich sein würde, um mich mit glGetError().
InformationsquelleAutor Tony R | 2009-04-12
Schreibe einen Kommentar