Faltan funciones de WebGL y OpenGL ES

10

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 glPushMatrixy glPopMatrix. No los veo en WebGL, pero en mis búsquedas tampoco puedo encontrarlos referenciados en el material de OpenGL ES.

Chris Smith
fuente

Respuestas:

9

El wiki de WebGL contenía una sección en su jerarquía de preguntas frecuentes para " Diferencias de WebGL y OpenGL " que parece centrarse en las diferencias en WebGL de las implementaciones de OpenGL de "escritorio" y, por desgracia, no es muy detallado (principalmente se trata del comportamiento, no de la API) .

Si eso no entra en detalles suficientes para usted, es posible que deba comparar el último borrador de WebGL con las especificaciones OpenGL ES u OpenGL manualmente.


fuente
9

¿Has revisado el último borrador de WebGL?

Según el borrador en caso de contradicción, la especificación OpenGL ES 2.0 es la autoridad final.

El Capítulo 6 describe las diferencias de OpenGL ES 2.0 a WebGL.

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

Tadeu Maia
fuente
Tuviste una buena respuesta, que voté positivamente, pero acepté la otra respuesta porque señalaba otros recursos para verificar. Gracias por tu ayuda.
Chris Smith
0

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, glVertexetc 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?

gman
fuente