Zacząłem korzystać z WebGL i cieszę się, jak łatwo mogę korzystać z mojego OpenGL (i przez rozszerzenie OpenGL ES). Moje rozumienie jest jednak następujące:
- OpenGL ES jest podzbiorem OpenGL
- WebGL jest podzbiorem OpenGL ES
Czy jest to poprawne w obu przypadkach? Jeśli tak, to czy są dostępne zasoby do wyszczególnienia, jakich funkcji brakuje?
Na przykład jedną istotną brakującą funkcją jest glPushMatrix
i glPopMatrix
. Nie widzę ich w WebGL, ale w moich wyszukiwaniach nie mogę ich znaleźć w materiałach OpenGL ES.
Znalazłem świetny zasób do porównania, jakie konkretne interfejsy API są dostępne w różnych wersjach OpenGL / WebGL / OpenGL ES.
Myślę, że znajdziesz to, czego szukasz, tutaj: http://web.eecs.umich.edu/~sugih/courses/eecs487/common/notes/APITables.xml
źródło
Jednym ze sposobów na to jest WebGL to OpenGL ES 2.0, a OpenGL ES 2.0 to OpenGL z usuniętym starszym cruft.
Od shadery dodano całą spuściznę funkcji stałej rurociągu
glPushMatrix
,glLight
,glVertex
etc wszystko nie ma sensu trzymać się wokół.Czy więc te „brakujące” funkcje lub poprawnie i odpowiednio „przestarzałe” funkcje?
Jakich konkretnych funkcji szukasz?
WebGL / OpenGL ES 2.0 to podstawowy moduł cieniujący wierzchołki i fragmenty. Istnieje ograniczona obsługa tekstur bez mocy 2 i tylko kilka formatów tekstur (tak naprawdę nie ma większego limitu, 99% wszystkich tekstur to RGB8 lub RGBA8). Obsługa tekstur zmiennoprzecinkowych jest opcjonalna, ale obsługuje je większość urządzeń. Obsługa renderowania do tekstur zmiennoprzecinkowych jest jednak rzadsza. Niewiele, jeśli jakieś urządzenia mobilne obsługują renderowanie do tekstury zmiennoprzecinkowej.
WebGL2 (właśnie dostarczony) i OpenGL ES 3.0 dodały mnóstwo nowych formatów tekstur, w tym tekstur opartych na liczbach całkowitych i tekstur 3D. Usunęło to ograniczenia tekstur bez mocy 2. Dodano sprzężenie zwrotne dotyczące transformacji (zdolność modułu do cieniowania wierzchołków do zapisywania w buforze). Dodano także zapytania dotyczące okluzji. Obiekty tablicy wierzchołków są standardowe (były opcjonalne w WebGL / ES 3.0). Istnieje wiele innych drobniejszych funkcji.
ES 3.1 (i prawdopodobnie następna wersja WebGL) dodaje shadery obliczeniowe (zdolność shadera fragmentów do wykonywania zapisów o swobodnym dostępie). Shadery fragmentów mogły zapisywać tylko w żądanym momencie fragmentu / piksela, podczas gdy shadery obliczeniowe i zapisywać gdziekolwiek chcą.
Z jakich innych funkcji chciałeś skorzystać?
źródło