2012-04-10 5 views
1

Ich habe ein iPhone-Spiel, das ich auf PC portiere. Das Spiel benutzt OpenGL ES 2 (Shader) und ich muss entscheiden, welche Version von OpenGL verwendet werden soll.Portierung OpenGL ES 2 zu OpenGL

Sollte ich alle Shader auf OpenGL 2 portieren (und ältere Hardware unterstützen)? Oder sollte ich nach OpenGL 3 portieren (was ich noch nicht gut kenne, aber es scheint, dass die Shader kompatibler sind)? Was wird einfacher zu portieren sein?

Antwort

2

Da OpenGL ES 2 eine Untergruppe von Desktop OpenGL 2 ist, sollten Sie ziemlich gut mit 2.x arbeiten, wenn Sie Ihr Spiel nicht benötigen, um fortgeschrittene Techniken auf dem PC zu verwenden (wie Instanziierung, Texturarrays, Geometrieshader, ..., Dinge, von denen dein ES-Gerät noch nie gehört hat.

Denken Sie daran, dass die Tatsache, dass Sie den Direktmodus und die feste Funktionspipeline in Desktop GL 2 verwenden können, nicht bedeutet, dass Sie sollten. Sie können in OpenGL 2.0 völlig vorwärts-kompatible moderne GL (VBOs, Shader, ...) programmieren. Auf der anderen Seite unterscheidet sich GL 3.x nicht wirklich von früheren Versionen, es bringt nur einige zusätzliche Features, die später bei Bedarf hinzugefügt werden können. Es gibt keine echte Entscheidung zwischen GL 2 oder 3, nur zwischen modernem VBO-Shader-basiertem GL und altem, auf Sofort-Modus-Fixed-Function-basierenden GL, und mit Ihrem Spiel, das bereits GL ES 2.0 verwendet, haben Sie bereits die richtige Entscheidung getroffen.

Eigentlich wären Ihre Shader mit GL 2 besser kompatibel als 3, da ES 2 das alte Attribut/die variierende Syntax verwendet. Aber das als eine Nebenbemerkung, nichts, um wirklich Ihre Entscheidung zu steuern, wie Sie möglicherweise Ihre Shader sowieso ein wenig ändern müssen (z. B. Handle/Remove Precision Qualifiers).