Übergang von OpenGL ES 1.1 zu OpenGL ES 2.0

8

Es ist eine Weile her, seit das iPhone 3GS herauskam, und jetzt könnte genug Marktanteil von OpenGL ES 2.0 unterstützenden Geräten sein, um die Entwicklung zu rechtfertigen.

Aber die Situation ist, dass viele Entwickler wahrscheinlich bereits große Codebasen in OpenGL ES 1.1 haben

Wie wechselt man von ES 1.1 zu ES 2.0? Ich nehme an, die Matrizen müssen gepflegt werden, sowie Sachen wie GL_FOG, GL_CULL vielleicht?

Ist es möglich, für diese Funktionen "Ersatz" zu schreiben, z. B. Ihre eigene glTranslatef, glPushmatrix usw.? Wird das bedeuten, dass die Leistung ankommt?

Welche anderen Überlegungen gibt es für den Übergang zu ES 2.0? Welche Vorteile und Nachteile (neben dem offensichtlichen Problem der Geräteunterstützung) kommen mit der Verwendung dieser beiden?

Betrachtet man die Menge von es 2.0 Tags im Vergleich zu Standard es Tags in stackoverflow, sieht es so aus, als wäre es noch nicht die Zeit für 2.0.

    
kamziro 03.05.2011, 07:09
quelle

3 Antworten

17

Gehen Sie nicht einfach in den Tags von Stack Overflow nach Aktivität, wenn Sie herausfinden möchten, ob Sie OpenGL ES 2.0 verwenden möchten oder nicht. Zum einen wird nicht jede 2.0 oder Shader-bezogene Frage als solche markiert. Außerdem gab es eine Menge Informationen über OpenGL ES 1.1 bei oder kurz nach dem Start des iPhone SDK, so dass die Leute mit dieser API viel vertrauter sind. Es gibt offensichtlich ein großes Interesse an OpenGL ES 2.0, wie die Tatsache zeigt, dass meine Ein-Klassen-Sitzung zu diesem Thema bei weitem die populärste aller mein Kursvideos .

In den meisten Fällen ist die Art und Weise, wie Sie mit Ihrer Geometrie umgehen, zwischen 1.1 und 2.0 gleich, genauso wie Dinge wie Ihre Framebuffer, aber alles andere wird von integrierten Funktionen zu Ihren eigenen Shadern verschoben. Sie müssen Code schreiben, um einfache Funktionen wie die Modellansichtsmatrix oder das Texturieren zu replizieren, aber diese erfordern in der Regel nur wenige Zeilen in einem Shader. Wenn Sie beispielsweise die Modellansichtsmatrix verwenden, um Ihre Scheitelpunkte anzupassen, können Sie einfach eine Linie wie diese in Ihrem Vertex-Shader platzieren:

%Vor%

Ich persönlich habe die Funktionen glRotate () usw. vor langer Zeit mit dem Core ersetzt. Animation Hilfsfunktionen , um zu manipulieren, was effektiv eine Modellansichtsmatrix ist. Dies machte es trivial, diesen Code auf OpenGL ES 2.0 zu verschieben.

Jeff LaMarche hat auch eine extrem nützliche Hilfsklasse, um den größten Teil des Setup-Codes für den Shader-Programm in seinem Artikel hier .

Eine gute Anleitung zum Übergang zu OpenGL ES 1.1 finden Sie im Artikel "Migration von OpenGL ES 1.0 zu OpenGL ES 2.0", der ein Kapitel im Buch GPU Pro und kann in der Dokumentation zu den kostenlosen PowerVR SDK .

Ich habe erklärt, was OpenGL ES 2.0 in meinen vorherigen Antworten gut machen kann hier und hier , aber vielleicht wäre es nützlich, ein Vorher-Nachher zu zeigen, was die neue API Ihnen geben kann.

OpenGL ES 1.1:

OpenGL ES 2.0:

Hoffentlich sehen Sie, wie sich einige der eingebauten Funktionen durch Shader ersetzen lassen.

    
Brad Larson 03.05.2011, 17:06
quelle
1

Wenn Sie bereits Projekte haben, würde ich Ihnen nicht empfehlen, zu 2.0 zu wechseln, da der erforderliche Aufwand sehr wahrscheinlich mehr ist, als es wert wäre. Das heißt, für neue Projekte gibt es keinen Grund, sich meiner Meinung nach 1.1 mehr zu überlegen. Die meisten der Geräte, die verkauft wurden, sind 3GS oder 4S, von denen beide 2.0 mehr als fähig sind.

    
jer 03.05.2011 07:13
quelle
1

OpenGL ES 2.0 hat einige Gemeinsamkeiten mit OpenGL ES 1.1 (im Rendering meine ich). Für jedes Rendering benötigen Sie einen Shader. Zum Beispiel wird FOG auch mit Shader erstellt. Aber du wirst mehr Kraft haben.

+1 auf @jer seine Antwort

    
Yuriy Vikulov 03.05.2011 07:21
quelle

Tags und Links