Pergunta

Estou escrevendo um aplicativo básico do Planet Viewer OpenGL Perl, apenas por diversão. Eu tenho o básico trabalhando, com o planeta glorioso, implementado através de um gluSphere(), girando com o mapa clássico de textura da terra aplicado.

Agora, e se eu quiser aplicar um segundo mapa de textura através do OpenGL (digamos, as "nuvens da terra")?

Obviamente, eu posso misturar os dois mapas de textura no Photoshop ou em algum outro aplicativo gráfico, mas existe uma maneira de openGL API?

Tentei carregar as duas texturas e gerar os MIPMAPs, mas o planeta é mostrado apenas com a primeira textura aplicada, não a segunda.

Foi útil?

Solução

Como Jim Buck disse, você pode obter o efeito desejado com a Multitexturing.

No entanto, não acho que o Glu Quadrics suporta a geração de coordenadas multitexturas (ou seja, usando o GlmultiteXCoord*() vs. GltexCoord*(). Então, acho que você precisará de seu próprio código de esfera para seguir a rota da Multitexture.

Como alternativa, você pode se safar de desenhar uma esfera um pouco maior em torno do seu atual que possui o segundo mapa de textura (com o uso adequado do canal alfa e da mistura). É provável que isso cause combate Z, por isso pode ser mais problemas do que vale a pena.

Escrever seu próprio código de esfera não é difícil-provavelmente a rota mais fácil para obter resultados satisfatórios.

Outras dicas

Como você deseja que suas texturas sejam combinadas? Você poderá obter o efeito desejado se simplesmente usar multi-textura:

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

Certifique -se de configurar suas chamadas GLTEXENVF, dependendo de como você deseja que as texturas sejam combinadas. Em seguida, ligue para Glusphere ().

Eu concordo com Drew Hall. Talvez mais simples para fazer uma segunda esfera. E nem todos os cartões do OpenGL suportam multixturing.

Você pode combater o combate Z com o Glpolygonoffset.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top