Comencé a usar WebGL y estoy satisfecho con lo fácil que es aprovechar mi experiencia OpenGL (y, por extensión, OpenGL ES). Sin embargo, entiendo lo siguiente:
- OpenGL ES es un subconjunto de OpenGL
- WebGL es un subconjunto de OpenGL ES
¿Es esto correcto en ambos casos? Si es así, ¿hay recursos para detallar qué características faltan?
Por ejemplo, una característica notable que falta es glPushMatrix
y glPopMatrix
. No los veo en WebGL, pero en mis búsquedas tampoco puedo encontrarlos referenciados en el material de OpenGL ES.
Encontré un gran recurso para comparar qué API específicas están disponibles en diferentes versiones de OpenGL / WebGL / OpenGL ES.
Creo que encontrará lo que está buscando, aquí: http://web.eecs.umich.edu/~sugih/courses/eecs487/common/notes/APITables.xml
fuente
Una forma de verlo es WebGL es OpenGL ES 2.0 y OpenGL ES 2.0 es OpenGL con todo el legacy cruft eliminado.
Desde shaders se añadieron todo el legado de la función fija de tuberías
glPushMatrix
,glLight
,glVertex
etc todo hecho ningún sentido mantener alrededor.Entonces, ¿son esas características "faltantes" o las características "obsoletas" correcta y correctamente?
¿Qué características específicas estás buscando?
WebGL / OpenGL ES 2.0 es un sombreador básico de vértices y fragmentos. Hay compatibilidad limitada para texturas sin potencia de 2 y solo unos pocos formatos de textura (en realidad, no hay mucho límite, el 99% de todas las texturas son RGB8 o RGBA8). La compatibilidad con texturas de punto flotante es opcional, pero la mayoría de los dispositivos las admiten. Sin embargo, el soporte para renderizar en texturas de coma flotante es más raro. Pocos dispositivos móviles, si los hay, admiten la representación en una textura de punto flotante.
WebGL2 (recién enviado) y OpenGL ES 3.0 agregaron una tonelada de nuevos formatos de textura que incluyen texturas basadas en enteros y texturas 3D. Eliminó los límites de textura sin potencia de 2. Agregó retroalimentación de transformación (la capacidad de un sombreador de vértices para escribir en un búfer). También agregó consultas de oclusión. Los objetos de matriz de vértices son estándar (eran opcionales en WebGL / ES 3.0). Hay muchas otras características menores.
ES 3.1 (y probablemente la próxima versión de WebGL) agrega sombreadores de cómputo (la capacidad de un sombreador de fragmentos para realizar escrituras de acceso aleatorio). Los sombreadores de fragmentos solo podían escribir en el fragmento / píxel que se les solicitaba en ese momento, mientras que calcular sombreadores y escribir en cualquier lugar que quisieran.
¿Qué otras características querías usar?
fuente