Question

Je travaille sur un jeu en 2D avec OpenGL ES. J'utilise la projection orthographique, car elle facilite la tâche en 2D. Maintenant, j'aimerais créer un simple effet 3D, disons faire pivoter une image-objet autour de l'axe des Y (quelque chose comme un écoulement de couverture). Si je comprends bien les choses, cela ne peut pas être fait dans la projection ortho. Est-il possible de le faire sans gâcher le reste du code? Comme pour changer la projection au milieu de l’image, traiter l’image actuelle comme un arrière-plan et dessiner le contenu 3D au-dessus de l’arrière-plan?

Était-ce utile?

La solution

Oui, c'est possible: sauvegardez simplement l'ancienne matrice de projection, chargez-en une nouvelle et restaurez-la lorsque vous avez terminé.

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
}

Faites attention au tampon de profondeur - vous devrez peut-être jouer avec les paramètres du tampon de profondeur lors du basculement entre le rendu 2D et 3D pour que les éléments soient correctement dessinés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top