参考图书:《OpenGL ES 3.0 编程指南(原书第二版)》
与Vulkan对比
Vulkan占有率
数据来源:分发信息中心 | Android 开发者 | Android Developers
https://developer.android.com/about/dashboards
Vulkan 版本 | 分发率 |
---|---|
无 | 47.0% |
Vulkan 1.0.3 | 25.0% |
Vulkan 1.1 | 28.0% |
数据是以 7 天为单位收集的(截至 2020 年 8 月 30 日)。
OpenGL ES版本
OpenGL ES 版本 | 分发率 |
---|---|
GL 2.0 | 12.28% |
GL 3.0 | 16.57% |
GL 3.1 | 8.77% |
GL 3.2 | 62.38% |
数据是以 7 天为单位收集的(截至 2020 年 8 月 30 日)。
总结
尽管Vulkan性能更加优秀,但是当前支持度不够。
OpenGL ES 3.1新特性
- 计算着色器(Compute Shaders)
新版的支柱性功能,来自OpenGL 4.3。通过它,应用可使用GPU执行通用目的计算任务,并与图形渲染紧密相连,将大大增强移动设备的计算能力。
此外,计算着色器是用GLSL ES着色语言编写的,可与图形流水线共享数据,开发也更容易。 - 独立的着色器对象
应用可为GPU的定点、碎片着色器阶段独立编程,无需明确的连接步骤即可将定点、碎片程序混合匹配在一起。 - 间接呼叫指令
GPU可以从内存获取呼叫指令,而不必非得等待CPU。举个例子,这可以让GPU上的计算着色器执行物理模拟,然后生成显示结果所需的呼叫指令,全程不必CPU参与。 - 增强的纹理功能
包括多重采样纹理、模版纹理、纹理聚集等等。 - 着色语言改进
新的算法和位字段(bitfield)操作,还有现代方式的着色器编程。 - 可选扩展
每采样着色、高级混合模式等等。 - 向下兼容
完全兼容OpenGL ES 2.0/3.0,程序员可在已有基础上增加3.1特性。
OpenGL ES 3.2新特性
- 曲面细分(终于!),改进渲染几何细节
- 集合着色器,增加细节和阴影
- ASTC纹理压缩,降低内存占用和带宽
- 浮点渲染器目标,更高精度计算
- 调试性能更健全稳定,更简单的代码和安全执行
- 增强的纹理目标和混合操作
- 延迟渲染,基于物理的着色
- HDR色调映射
- 全局照明与反射
- 烟雾和粒子效果