Pregunta

Estoy escribiendo una aplicación OpenGL Perl de visor de planetas básica, solo por diversión. Tengo lo básico trabajando, con el glorioso planeta, implementado a través de un gluSphere () , girando con el clásico mapa de textura de la tierra aplicado.

Ahora, ¿qué pasa si quiero aplicar un segundo mapa de textura a través de OpenGL (por ejemplo, las "nubes de tierra")?

Por supuesto, puedo mezclar los dos mapas de textura yo mismo en PhotoShop o alguna otra aplicación gráfica, pero ¿hay alguna forma de utilizar la API de OpenGL?

Intenté cargar las dos texturas y generar los mapas MIP, pero el planeta se muestra con solo la primera textura aplicada, no la segunda.

¿Fue útil?

Solución

Como dijo Jim Buck, puede obtener el efecto deseado con múltiples texturas.

Sin embargo, no creo que los cuádricos GLU admitan la generación de coordenadas de múltiples texturas (es decir, usando glMultiTexCoord * () frente a glTexCoord * (). Por lo tanto, creo que necesitará su propio código de esfera para seguir la ruta de múltiples texturas.

Alternativamente, puede salirse con la suya dibujando una esfera un poco más grande alrededor de su actual que tiene el segundo mapa de textura (con el uso apropiado del canal alfa y la mezcla). Sin embargo, es probable que esto cause peleas en z, por lo que puede ser más problemático de lo que vale.

Escribir su propio código de esfera no es difícil, probablemente la ruta más fácil para obtener resultados satisfactorios.

Otros consejos

¿Cómo quieres que se combinen tus texturas? Debería poder obtener el efecto deseado si simplemente usa texturizado múltiple:

glEnable(GL_TEXTURE_2D);

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture0ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture1ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

Asegúrese de configurar sus llamadas glTexEnvf dependiendo de cómo desee que se combinen las texturas. Luego llame a gluSphere ().

Estoy de acuerdo con Drew Hall. Quizás más simple hacer una segunda esfera. Y no todas las tarjetas opengl admiten texturizado múltiple.

Puede contrarrestar la lucha z con glPolygonOffset.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top