Je travaille sur un jeu 2D en utilisant OpenGL ES. J'utilise la projection orthographique, car cela facilite les choses en 2D. Maintenant, je voudrais créer un effet 3D simple, par exemple faire tourner un sprite autour de l'axe Y (quelque chose comme le flux 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 changer la projection au milieu du cadre, traiter l'image de l'image en cours comme un arrière-plan et dessiner la substance 3D au-dessus de l'arrière-plan?Effets 3D dans un jeu 2D utilisant OpenGL
4
A
Répondre
6
Oui, cela est possible: enregistrez simplement l'ancienne matrice de projection, chargez-en une nouvelle et restaurez l'ancienne 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 juste attention à la mémoire tampon de profondeur - vous devrez peut-être jouer avec les paramètres de mémoire tampon de profondeur lors de la commutation entre l'affichage 2D et 3D afin que les choses se tirer correctement.