Ich habe angefangen, WebGL zu verwenden, und bin zufrieden damit, wie einfach es ist, meine OpenGL-Erfahrung (und damit auch OpenGL ES) zu nutzen. Mein Verständnis ist jedoch wie folgt:
- OpenGL ES ist eine Teilmenge von OpenGL
- WebGL ist eine Teilmenge von OpenGL ES
Ist das in beiden Fällen richtig? Wenn ja, gibt es Ressourcen, um zu beschreiben, welche Funktionen fehlen?
Eine bemerkenswerte fehlende Funktion ist beispielsweise glPushMatrix
und glPopMatrix
. Ich sehe diese nicht in WebGL, aber bei meinen Suchen kann ich sie auch nicht finden, auf die in OpenGL ES-Material verwiesen wird.
Ich habe eine großartige Ressource gefunden, um zu vergleichen, welche spezifischen APIs für verschiedene Versionen von OpenGL / WebGL / OpenGL ES verfügbar sind.
Ich denke, Sie finden hier, wonach Sie suchen: http://web.eecs.umich.edu/~sugih/courses/eecs487/common/notes/APITables.xml
quelle
Eine Möglichkeit, dies zu betrachten, ist WebGL, OpenGL ES 2.0, und OpenGL ES 2.0 ist OpenGL, wobei alle alten Cruft entfernt wurden.
Da Shader hinzugefügt
glPushMatrix
wurdenglLight
,glVertex
machte es keinen Sinn , die alte Pipeline mit festen Funktionen usw. beizubehalten.Sind diese "fehlenden" Funktionen oder korrekt und ordnungsgemäß "veraltete" Funktionen?
Welche spezifischen Funktionen suchen Sie?
WebGL / OpenGL ES 2.0 ist ein grundlegender Vertex- und Fragment-Shader. Es gibt nur begrenzte Unterstützung für Nicht-Power-of-2-Texturen und nur wenige Texturformate (99% aller Texturen sind RGB8 oder RGBA8). Die Unterstützung von Gleitkomma-Texturen ist optional, wird jedoch von den meisten Geräten unterstützt. Die Unterstützung für das Rendern in Gleitkomma-Texturen ist jedoch seltener. Nur wenige mobile Geräte unterstützen das Rendern in eine Gleitkomma-Textur.
WebGL2 (gerade ausgeliefert) und OpenGL ES 3.0 haben eine Menge neuer Texturformate hinzugefügt, darunter ganzzahlige Texturen und 3D-Texturen. Die Nicht-Potenz-von-2-Texturgrenzen wurden entfernt. Es wurde Transformations-Feedback hinzugefügt (die Fähigkeit eines Vertex-Shaders, in einen Puffer zu schreiben). Es wurden auch Okklusionsabfragen hinzugefügt. Vertex-Array-Objekte sind Standard (sie waren in WebGL / ES 3.0 optional). Es gibt eine Reihe weiterer kleinerer Funktionen.
ES 3.1 (und wahrscheinlich die nächste Version von WebGL) fügt Compute-Shader hinzu (die Fähigkeit eines Fragment-Shaders, Schreibvorgänge mit wahlfreiem Zugriff auszuführen). Fragment-Shader konnten im Moment nur auf das von ihnen angeforderte Fragment / Pixel schreiben, während sie Shader berechnen und schreiben, wo immer sie wollen.
Welche anderen Funktionen wollten Sie verwenden?
quelle