2010-04-27 16 views
8

Mam bardzo, bardzo dziwne problem w mojej aplikacji C++ OpenGL.Tekstury OpenGL losowo nie pokazano

po prostu załadować tekstury i zastosować go do Quadric:

glGenTextures(1, &tex); 
glBindTexture(GL_TEXTURE_2D, tex); 
glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 

Następnie

glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, tex); 
gluQuadricDrawStyle(quad,GLU_FILL); 
gluQuadricTexture(quad,GL_TRUE); 
gluCylinder(quad,1,0,2,20,1); 
glDisable(GL_TEXTURE_2D); 

Teraz: działa idealnie 9 razy na dziesięć, ale czasami nie pokazano tekstury (kwadraty pozostają białe).

Plik image został poprawnie załadowany, więc problem powinien dotyczyć OpenGL. Próbowałem też z kilkoma różnymi obrazami. Zawsze GL_NO_ERROR.

Każdy pomysł? To doprowadza mnie do szału ...

+0

Trochę głupie, ale w czasach, gdy nie chce się załadować, jeśli zminimalizować następnie zmaksymalizować okno, nie wydaje się? – Robb

+0

Nie, nie ładuje się, nawet jeśli minimalizuję/maksymalizuję. – TheDude

+3

Czy możesz przetestować to na innym komputerze lub z różnymi sterownikami? –

Odpowiedz

2

Znaleziony :) to w jako element GLint texture, który nie został poprawnie ponownie przydzielony w konstruktorze kopiowania.

Jednak ja nadal nie rozumiem, dlaczego to działało czasami ...

1

Kod, którego używasz, wydaje się prawidłowy. Mieć cię ...

  • próbował użyć prostego quad zamiast Quadric
  • pewność, że image jest wypełniony poprawnie
  • sprawdzeniu, że nie jest zmieniany tex gdzieś indziej
  • pewność, że żadne inne programy OpenGL jednocześnie
  • ponownym uruchomieniu komputera;)
Powiązane problemy