OpenGL Texturen werden bei manchen nicht angezeigt.
-
Hi,
Ich habe eine openGL Applikation(unten mehr) in der es nur darum ging einen Teil eines Bildes als Texture auf einem QUAD bzw. 2 TRIANGLES anzuzeigen.
Bei manchen, so auch bei mir funktionierts auch, bei anderen wiederrum nicht. Und zwar habe ich es bei 5 weiteren Personen getestet und bei 2en wurde die Textur einfach nicht angezeigt(Das Rechteck auf der es liegt inkl. dessen Farbe jedoch sehr wohl).
An den anderen Libs dürfte es nicht liegen, da ich es einmal mit SFML und einmal mit GTKmm>kGLextmm ausprobiert habe und das selbe Ergebnis erziehlt wurde.Ich bemüh mich mal die relevanten Teile des Codes zu zeigen:
Beim erstellen des Fensters:glClearColor(bg_r, bg_g, bg_b, bg_a); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, width, height, 0);initialisieren des Tiles, das gezeichnet werden soll:
m_texture.LoadFromFile("001-Grassland01.png"); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(1, &m_texture_name); glBindTexture(GL_TEXTURE_2D, m_texture_name); 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_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_texture.GetWidth(), m_texture.GetHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, m_texture.GetPixelsPtr());Beim rendern:
glClear(GL_COLOR_BUFFER_BIT); //[...] glEnable(GL_TEXTURE_2D); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glBindTexture(GL_TEXTURE_2D, m_texture_name); glBegin(GL_QUADS); glTexCoord2f(0, fr.Top); glVertex2f(100, 100); glTexCoord2f(0, fr.Bottom); glVertex2f(100, 132); glTexCoord2f(fr.Right, fr.Bottom); glVertex2f(132, 132); glTexCoord2f(fr.Right, fr.Top); glVertex2f(132, 100); glEnd(); glFlush(); glDisable(GL_TEXTURE_2D);Wie ihr seht, hab ich auch nicht wirklich Code, der überprüft ob alles richtig gelaufen ist, ehrlich gesagt aber auch keine Ahnung, was ich da überprüfen soll.
Das heißt ich würds auf jeden Fall begrüßen, wenn jemand wüsste woran das liegt, dass es bei manchen nicht texturiert wird, aber auch Angaben wo ich denn wie auf Fehler überprüfen könnte um rauszufinden woran das liegt und es ggf. abzufangen, oder generell zu lösen wären schon recht hilfreich.
danke.
-
was du suchst heisst
glGetError();bau dir das ein, gib entsprechend ein log aus wenn etwas schief geht und lass dir von den leuten ihres schicken wenn sie ein problem hatten.
-
Sind die Seitenlängen der Textur auch 2^n und ist die Textur quadratisch und nicht großer als 2048 * 2048?
(Manche Grafikkarten haben sonst Probleme damit)