2010-04-27 9 views
8

Tengo muy, muy extraño problema en mi C++ OpenGL aplicación.OpenGL textura aleatoriamente no se muestra

simplemente me carga una textura y aplicarlo a una cuádrica:

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); 

Entonces

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); 

Ahora: funciona perfectamente 9 de cada diez veces, pero a veces no se muestra la textura (el cuadriculado se mantiene blanco).

El image está cargado correctamente, por lo que el problema debería ser con OpenGL. Lo he intentado con varias imágenes diferentes también. Siempre GL_NO_ERROR.

¿Alguna idea? Me está volviendo loco ...

+0

un poco tonto, pero en los momentos en los que no se carga, si minimiza entonces maximizar la ventana, aparece? – Robb

+0

No, no se carga, incluso si minimizo/maximizo. – TheDude

+3

¿Puedes probarlo en una PC diferente o con diferentes controladores? –

Respuesta

2

Encontrado :) Es w como el miembro GLint texture que no se reasignó correctamente en el constructor de copia.

Sin embargo, todavía no entiendo por qué funcionaba a veces ...

1

Parece que el código que estás utilizando parece válido. ¿Tiene usted ...

  • trató de usar un quad sencilla en lugar de la cuádrica
  • aseguró que image se llena correctamente
  • comprobó que tex no se altera en otro lugar
  • la seguridad de que no haya otros programas usando OpenGL al mismo tiempo
  • reiniciado el equipo;)
Cuestiones relacionadas