3D -Effekte in einem 2D -Spiel mit OpenGL
-
22-07-2019 - |
Frage
Ich arbeite an einem 2D -Spiel mit OpenGl ES. Ich benutze die orthografische Projektion, da sie das 2D -Zeug einfach macht. Jetzt möchte ich einen einfachen 3D -Effekt erzeugen, sagen Sie, dass Sie ein Sprite um die Y -Achse drehen (so etwas wie Deckstrom). Wenn ich die Dinge richtig verstehe, kann dies in der Ortho -Projektion nicht getan werden. Ist es möglich, es zu tun, ohne den Rest des Codes durcheinander zu bringen? Behandeln Sie wie die Projektion in der Mitte des Rahmens das aktuelle Rahmenbild als Hintergrund und zeichnen Sie das 3D -Material über dem Hintergrund?
Lösung
Ja, das ist möglich: Speichern Sie einfach die alte Projektionsmatrix, laden Sie eine neue und stellen Sie die alte wieder her, wenn Sie fertig sind.
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
}
Seien Sie nur vorsichtig mit dem Tiefenpuffer - Sie müssen möglicherweise mit den Tiefenpuffereinstellungen herumspielen, wenn Sie zwischen 2D- und 3D -Rendering wechseln, damit die Dinge richtig gezogen werden können.