OpenGL ES 2.0 unterscheidet sich stark von ES 1.1. Sie haben keine Pipeline mit festen Funktionen mehr, sodass Ihre vertraute "Push-Matrix, Übersetzen, Drehen" usw. nicht mehr vorhanden sind.
Stattdessen haben Sie das Konzept der Shader: Scheitelpunkt und Fragment. Es sind kleine Programme, die für jeden Scheitelpunkt und jedes Pixel ausgeführt werden. Hier finden alle Transformationen und anderen Effekte statt. Ihr Code bereitet die Scheitelpunktdaten vor, teilt OpenGL mit, wie sie strukturiert sind, und übergibt sie den Shadern.
Aber nicht alles ist verloren: Einige Teile von OpenGL haben sich nicht geändert, z. B. das Festlegen verschiedener Zustände (Mischmodi, Tiefenvergleiche) oder das Erstellen von Texturen.
Um OpenGL ES 2.0 effektiv nutzen zu können, müssen Sie die Grundlagen der 3D-Computergrafik beherrschen. Besorgen Sie sich also ein gutes Einführungsbuch und lernen Sie die Prinzipien. Anschließend können Sie zu OpenGL ES 2.0 wechseln und mit dem Schreiben von Shadern beginnen. Dies ist ein gutes OpenGL ES 2.0-Buch .
Schließlich nicht davon ausgehen , Sie haben auf OpenGL ES 2.0 zu bewegen. Sofern Sie in ES 1.1 nichts Spezielles benötigen, das Sie nicht tun können, können Sie ES 1.1 weiterhin verwenden, da neuere Geräte alle abwärtskompatibel sind.
Ich habe meine 3D Engine von OpenGL ES 1.X auf OpenGL ES 2.X portiert, weil ich Shader liebe. Die Renderer sind unterschiedlich und teilen keinen Code.
Sie können leicht übersetzen:
Schwieriger (Need Shader):
Um Ihren Code zu portieren, empfehle ich Ihnen:
Schritt eins
Schritt zwei
Listen Sie alle Scheitelpunktinformationen als Scheitelpunktkoordinaten, Normalen, Texturenkoordinaten und Farbinformationen auf, die Sie für jedes Material benötigen
Mit diesen Informationen wissen Sie, welche GLSL-Programme (Vertex + Fragment Shader) Sie schreiben müssen.
Schritt drei
Schritt vier: Optimieren
quelle
OpenGL ES 2.0 ist keine neue Version von OpenGL ES 1.1. Mit anderen Worten, OpenGL ES 2.0 ist kein besseres OpenGL ES 1.1.
Nun nein duh, sie haben alles verändert.
Der Import dieser einfachen Aussage ist leicht zu übersehen. Bedenken Sie:
OpenGl 2.0 ist eine neue Version von OpenGL 1.5. OpenGL 2.0 ist ein besseres OpenGL 1.5.
Dies bedeutet, wenn Sie OpenGl 1.5 verwenden und die Vorwärtskompatibilität beibehalten möchten, sollten Sie auf 2.0 umsteigen.
Gleiches gilt nicht für OpenGL ES. 1.1 wurde nicht durch 2.0 ersetzt. Sie sind unterschiedliche Standards. Die Verwirrung hätte beseitigt werden können, wenn sie benannt worden wären:
HINWEIS: Technisch gesehen ist dies nicht ganz richtig. Der Grund dafür ist, dass Sie die 1.0-Serie mit der 2.0-Serie implementieren können. Sie müssten nur die festen Pipeline-Funktionen als Shader festlegen.
quelle
Neben den anderen Antworten hier habe ich kürzlich gles2-bc gefunden, eine C ++ - Bibliothek, die die nicht abwärtskompatible OpenGL ES 2.0-API abwärtskompatibel macht.
Es gibt einige bekannte Einschränkungen und ich habe sie selbst nicht verwendet, dachte aber, ich würde den Link als Referenz posten.
http://code.google.com/p/gles2-bc/
quelle