Pregunta

Estoy trabajando en un juego 2D con OpenGL ES. Estoy usando la proyección ortográfica, ya que facilita las cosas en 2D. Ahora me gustaría crear un efecto 3D simple, digamos rotar un sprite alrededor del eje Y (algo así como el flujo de cobertura). Si entiendo las cosas correctamente, esto no se puede hacer en la proyección ortopédica. ¿Es posible hacerlo sin estropear el resto del código? ¿Como cambiar la proyección en el medio del marco, tratar la imagen del marco actual como un fondo y dibujar las cosas en 3D sobre el fondo?

¿Fue útil?

Solución

Sí, esto es posible: simplemente guarde la matriz de proyección anterior, cargue una nueva y restaure la anterior cuando haya terminado.

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
}

Solo tenga cuidado con el búfer de profundidad: es posible que deba jugar con la configuración del búfer de profundidad al cambiar entre renderizado 2D y 3D para que las cosas se dibujen correctamente.

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