Estoy tratando de descubrir la asignación de texturas en OpenGL y no puedo obtener un ejemplo simple para trabajar.¿El mapa de textura OpenGL simple no funciona?
El polígono se está dibujando, aunque no tiene una textura, sino solo un color sólido. Además, el mapa de bits se está cargando correctamente en sprite1 [] ya que estaba usando glDrawPixels hasta ahora.
Uso glGenTextures para obtener mi nombre de tex, pero noto que no cambia texName1; este GLuint es lo que sea que lo inicie, incluso después de la llamada a glGenTextures ...
He habilitado GL_TEXTURE_2D.
Aquí está el código:
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();
ACTUALIZACIÓN: Estoy en una pérdida. Aquí es todo lo que he intentado:
resulta que estaba inicializando la textura de mi antes de OGL se ha inicializado. La textura se inicializa (glGenTextures-> glTexImage2D) en un constructor de clase y se dibuja (glBegin-> glEnd) en una función miembro que se llama cada fotograma. genTextures parece estar funcionando correctamente ahora y obtengo un nombre de 1.
Todas las combinaciones posibles de GL_RGBA8, GL_BGRA_EXT (GL_BGRA no funciona en mi sistema, necesito el _EXT), e incluso eliminé el canal alfa del mapa de bits e intentado todas las combinaciones de GL_RGB, GL_BGR_EXT, etc. etc. Sin suerte.
intentado crear un mapa de bits de procedimiento y el uso que
se aseguró de GL_COLOR_MATERIAL no está habilitado.
Cambió el tamaño del mapa de bits a 32x32.
Probé glTexEnvi en lugar de glTexEnvf.
si texName1 está restante 0 después de glGenTextures debe verificar sus condiciones de error ... –
¿El ancho y el alto están almacenados como byte o int en sprite1 []? –
ancho y alto se almacena como byte little endian. He usado sprite1 [18] y sprite1 [22] con éxito antes con glDrawPixels; ellos son correctos. El mapa de bits tiene solo 29x20 píxeles, por lo que funciona. –