Pergunta

Estou trabalhando em um jogo 2D usando o OpenGL ES. Estou usando a projeção ortográfica, pois facilita o material 2D. Agora eu gostaria de criar um efeito 3D simples, digamos um sprite em torno do eixo y (algo como o fluxo de capa). Se eu entendo as coisas corretamente, isso não pode ser feito na projeção da Ortho. É possível fazer isso sem estragar o restante do código? Como mudar a projeção no meio do quadro, trate a imagem da estrutura atual como um fundo e desenhe o material 3D acima do fundo?

Foi útil?

Solução

Sim, isso é possível: basta salvar a matriz de projeção antiga, carregar uma nova e restaurar a antiga quando terminar.

void DrawScene()
{
  Draw2DStuff();

  glMatrixMode(GL_PROJECTION);
  glPushMatrix();  // Save old projection matrix
  gluPerspective(...);  // Load new projection matrix

  Draw3DStuff();

  glMatrixMode(GL_PROJECTION);
  glPopMatrix();  // Restore old projection matrix
}

Apenas tenha cuidado com o buffer de profundidade - pode ser necessário brincar com as configurações de buffer de profundidade ao alternar entre a renderização 2D e 3D para que as coisas sejam desenhadas corretamente.

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