2010-08-04 14 views
7

he notado que cuando estoy cargando una textura, que podría cambiar el color de dibujo actual, dependiendo del color de la textura. Por ejemplo, después de ejecutarOpenGL: Cargar una textura cambia el color actual

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, info.biWidth, 
    info.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,bitmap); 
glTexParameterf(GL_TEXTURE_2D, 
    GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameterf(GL_TEXTURE_2D, 
    GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

todos los polígonos dibujados consecutivos a la pantalla tendrá un color en función de la imagen de textura cargado en.

Es esa norma? No encontré este comportamiento documentado.

Respuesta

9

Sí, así es como funciona, recuerde que GL es una máquina de estado, por lo que dejó la textura encuadernada (y probablemente habilitada), por lo que al dibujar utilizó el primer píxel (suponiendo que no haya proporcionado ninguna textura) para colorear el primitivo.

Para resolverlo, deshabilitar texturizado cuando no se desea texturizado, puede hacerlo con:

glDisable(GL_TEXTURE_2D); 
+0

Huh? ¿No es mejor simplemente 'glColor4f (1.0f, 1.0f, 1.0f, 1.0f)', en lugar de deshabilitar la función de textura completa? –

+0

@Matias, gracias, pero estaré encantado de ver esto documentado en algún lugar del estándar OpenGL. –

+0

@Elazar No, el uso de glColor multiplicará el color de la textura con 1.0. Esto no se documenta directamente, la única documentación que se encontrará es "GL es una máquina de estados", si están activadas las texturas, la textura uno está obligado, ¿cómo esperas GL para saber que no desea texturas? –