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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top