WebGL和OpenGL ES缺少的功能


10

我已经开始使用WebGL,并且对利用我的OpenGL(以及扩展为OpenGL ES)的经验如此简单感到满意。但是,我的理解如下:

  • OpenGL ES是OpenGL的子集
  • WebGL是OpenGL ES的子集

两种情况都正确吗?如果是这样,是否有资源来详细说明缺少哪些功能?

例如,一个值得注意的缺失功能是glPushMatrixglPopMatrix。我没有在WebGL中看到它们,但是在搜索中我也找不到在OpenGL ES资料中引用的它们。

Answers:


9

WebGL的维基包含在其FAQ层次结构中的一节“ WebGL和OpenGL的差异似乎把重点放在“桌面” OpenGL实现和,唉,在WebGL的差别不是很详细”(主要是它是关于行为,而不是API) 。

如果没有为您提供足够的详细信息,则可能需要手动将最新的WebGL草案与OpenGL ES或OpenGL规范进行比较。




0

一种查看方法是WebGL是OpenGL ES 2.0,而OpenGL ES 2.0是OpenGL,并且已删除所有旧有的东西。

由于着色器中加入所有的传统固定管线glPushMatrixglLightglVertex等一切毫无意义,以保持周围。

那么,这些“缺失”功能还是正确正确地“弃用”功能?

您正在寻找什么特定功能?

WebGL / OpenGL ES 2.0是基本的顶点和片段着色器。对非2幂次幂纹理的支持有限,只有少数几种纹理格式(实际上没有太多限制是所有纹理中的99%是RGB8或RGBA8)。对浮点纹理的支持是可选的,但是大多数设备都支持它们。不过,很少支持渲染浮点纹理。几乎没有任何移动设备支持渲染到浮点纹理。

WebGL2(刚刚发货)和OpenGL ES 3.0添加了大量的新纹理格式,包括基于整数的纹理和3D纹理。它删除了非2幂纹理限制。它增加了变换反馈(顶点着色器写入缓冲区的能力)。它还添加了遮挡查询。顶点数组对象是标准的(在WebGL / ES 3.0中是可选的)。还有许多其他次要功能。

ES 3.1(可能还有WebGL的下一版本)增加了计算着色器(片段着色器执行随机访问写入的能力)。片段着色器目前只能写入其所请求的片段/像素,而计算着色器并写入所需的任何位置。

您还想使用其他哪些功能?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.