Wie verwende ich modernes OpenGL für 2D-Spiele?

9

Ich habe eine Vielzahl von "modernen" OpenGL (3.0+) -Tutorials für 3D gefunden, aber ich habe so gut wie nichts gefunden, als ich nach Informationen gesucht habe, wie man es für die Entwicklung von 2D-Spielen verwendet. Wie kann ich mit OpenGL for 2D Gamedev beginnen?

Insbesondere bin ich daran interessiert, Antworten auf folgende Themen zu erhalten:

  • Wie soll ich meine verschiedenen Matrizen für die orthografische Projektion einrichten?
  • Werden Shader in 2D-Anwendungen genauso häufig verwendet wie in 3D-Anwendungen? Wenn ja, was ist ihr Zweck in der 2D-Einstellung?
  • Wie soll ich mit der enormen Anzahl von Texturen umgehen, die offensichtlich für ein 2D-Spiel erforderlich sind?

Ich entschuldige mich für die relativ breite Frage, habe aber lange gesucht und nur sehr wenige nützliche Informationen gefunden, die für modernes OpenGL gelten.

Alexis King
quelle

Antworten:

11
  • Wie soll ich meine verschiedenen Matrizen für die orthografische Projektion einrichten?

Ihr Ziel ist 2D, richtig? Sie brauchen also keine Projektion. Projektion ist der Vorgang des Verdichtens einer 3D-Welt zu einer 2D-Ebene. Stellen Sie den Shader so ein, dass die Z-Koordinate jedes Scheitelpunkts standardmäßig verwendet wird, 0.0und Sie sollten festgelegt werden.

Sie können jedoch eine Skalierungsmatrix für die X- und Y-Koordinaten verwenden. Skalierung es so -10.0zu 10.0wird -1.0zu 1.0. Aus Gründen der Referenz lautet die Matrix dafür:

0.1   0.0   0.0
0.0   0.1   0.0
0.0   0.0   1.0
  • Werden Shader in 2D-Anwendungen genauso häufig verwendet wie in 3D-Anwendungen? Wenn ja, was ist ihr Zweck in der 2D-Einstellung?

Sie können sein. Sie können weiterhin für die Beleuchtung pro Pixel verwendet werden, um Objekten eine falsche Tiefe zu verleihen. Sie können auch für Textureffekte, Wassereffekte, Bilderzeugung verwendet werden. Sie können sie sogar verwenden, um physikalische Berechnungen mit ein wenig Trick durchzuführen.

Eine andere Möglichkeit ist: Alles, wofür sie in 3D verwendet werden. Es wird nur anders angewendet und ist nicht so gut dokumentiert. Obwohl die Leute, die 2D-Spiele spielen, wahrscheinlich nicht auf Ihren Fall eingehen werden, wenn Sie keine lebensechten Effekte haben, sind sie auch nicht erforderlich.

Sie müssen jedoch die Grundlagen von Shadern kennen, um ein Sprite zu rendern.

  • Wie soll ich mit der enormen Anzahl von Texturen umgehen, die offensichtlich für ein 2D-Spiel erforderlich sind?

Genau wie in 3D. Bündel von Texturobjekten, PBOs und ein oder mehrere Texturatlas. Wahrscheinlich auch ein paar Strukturen / Klassen und Kopfschmerzen. Ich denke, das würde "Asset Management" oder ähnliches heißen.

  • Wie kann ich mit 2D Gamedev beginnen?

Es gibt wahrscheinlich ein paar Tutorials da draußen. Da die 3D-Version häufiger verwendet wird, würde ich sagen, OpenGL für 3D zu lernen und dann das Gelernte auf das 2D-Gegenstück anzuwenden. 3D und 2D sind sehr ähnlich, 2D verfolgt die Z-Koordinate einfach nicht.

Wolfgang Skyler
quelle
5
Für 2D können Sie weiterhin eine orthografische Projektion und verschiedene Z-Koordinaten verwenden, um die Z-Pufferung durchzuführen. Andernfalls müssten Sie den Algorithmus des Malers selbst ausführen und in der richtigen Reihenfolge zeichnen.
Congusbongus
@congusbongus eigentlich, wenn Sie mit Transparenz spritzen, müssen Sie höchstwahrscheinlich den Algorithmus des Malers selbst machen ...
Panda Pyjama