Fehlende Funktionen von WebGL und OpenGL ES


10

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 glPushMatrixund 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.

Antworten:


9

Das WebGL- Wiki enthielt einen Abschnitt in seiner FAQ-Hierarchie für " WebGL- und OpenGL-Unterschiede ", der sich auf Unterschiede in WebGL gegenüber "Desktop" -OffenGL-Implementierungen zu konzentrieren scheint und leider nicht sehr detailliert ist (hauptsächlich geht es um Verhalten, nicht um die API). .

Wenn dies für Sie nicht detailliert genug ist, müssen Sie möglicherweise den neuesten WebGL-Entwurf manuell mit den OpenGL ES- oder OpenGL-Spezifikationen vergleichen .


9

Haben Sie den neuesten WebGL-Entwurf überprüft?

Nach dem Entwurf im Falle eines Widerspruchs ist die OpenGL ES 2.0-Spezifikation die letzte Instanz.

Kapitel 6 beschreibt die Unterschiede zwischen OpenGL ES 2.0 und WebGL.

http://www.khronos.org/registry/webgl/specs/latest/


Sie hatten eine gute Antwort, die ich positiv bewertet habe, aber die andere Antwort akzeptierte, weil sie auf andere Ressourcen hinwies, die überprüft werden sollten. Danke für Ihre Hilfe.
Chris Smith


0

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 glPushMatrixwurden glLight, glVertexmachte 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?

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.