【问题标题】:What are the differences between OpenGL ES 2.0 and OpenGL ES 3.0OpenGL ES 2.0 和 OpenGL ES 3.0 有什么区别
【发布时间】:2019-11-05 00:12:35
【问题描述】:

我想知道OpenGL ES 2.0OpenGL ES 3.0有什么区别。

OpenGL ES 3.0的主要优势是什么?

【问题讨论】:

    标签: opengl-es opengl-es-2.0 opengl-es-3.0


    【解决方案1】:

    我认为最好阅读官方specs上的“3.0及之前版本->新功能”部分

    并且它向后兼容 ES 2.0。

    【讨论】:

      【解决方案2】:

      总体而言,这些更改通过更大的缓冲区、更多格式、更多统一等提高了灵活性。实例渲染、像素缓冲区对象和遮挡查询等附加功能为优化提供了机会。根据您的平台,它可能是革命性的,但是许多关键功能已经是 iOS 等平台上的扩展。

      就我个人而言,最显着的变化是:

      • 顶点数组对象
      • 实例化渲染
      • ETC2/EAC 纹理压缩格式(之前在 Android 上,每个显卡制造商只支持自己的纹理格式)

      以下是 Alexey 链接到的 spec 中描述的更改列表:

      OpenGL ES 3.0 的新功能包括:

      • OpenGL 着色语言 ES 3.00
      • 转换反馈 1 和 2(有限制)
      • 统一的缓冲区对象,包括块数组
      • 顶点数组对象
      • 采样器对象
      • 同步对象和栅栏
      • 像素缓冲区对象
      • 缓冲区子范围映射
      • 缓冲区对象到缓冲区对象副本 314
      • 布尔遮挡查询,包括保守模式
      • 实例化渲染,通过着色器变量和/或顶点属性除数
      • 多个渲染目标
      • 2D 数组和 3D 纹理
      • 简化的纹理存储规范
      • R 和 RG 纹理
      • 纹理混合
      • 无缝立方体贴图
      • 具有完全环绕模式支持和 mipmapping 的非二次幂纹理
      • 纹理 LOD 钳位和 Mipmap 级别基础偏移和最大钳位
      • 至少 32 个纹理,片段和顶点着色器各至少 16 个
      • 16 位(带过滤)和 32 位(不带过滤)浮点纹理
      • 32 位、16 位和 8 位有符号和无符号整数渲染缓冲区、纹理和顶点属性
      • 8 位 sRGB 纹理和帧缓冲区(没有混合 RGB/sRGB 渲染)
      • 11/11/10 浮点 RGB 纹理
      • 共享指数 RGB 9/9/9/5 纹理
      • 10/10/10/2 无符号归一化和非归一化整数纹理
      • 10/10/10/2 有符号和无符号归一化顶点属性
      • 16 位浮点顶点属性
      • 每组件 8 位签名归一化纹理
      • ETC2/EAC 纹理压缩格式
      • 保证最小精度的内部纹理格式
      • 多重采样渲染缓冲区
      • 8 位无符号标准化渲染缓冲区
      • 深度纹理和阴影比较
      • 24 位深度渲染缓冲区和纹理
      • 24/8 深度/模板渲染缓冲区和纹理
      • 32 位深度和 32F/8 深度/模板渲染缓冲区和纹理
      • 拉伸 blits(有限制)
      • 帧缓冲区失效提示
      • 使用固定索引重新启动原语
      • 具有至少 24 个可用位的无符号整数元素索引
      • draw 命令允许指定访问元素的范围
      • 能够将任何 mipmap 级别附加到帧缓冲区对象
      • 最小/最大混合方程
      • 程序二进制文件,包括从链接的 GLSL 程序中查询二进制文件
      • 强制在线编译器
      • 非正方形和可转置的均匀矩阵
      • 额外的像素存储状态
      • 索引扩展字符串查询

      【讨论】:

        【解决方案3】:

        直接来自Wikipedia

        OpenGL ES 3.0 规范于 2012 年 8 月公开发布。OpenGL ES 3.0 向后兼容 OpenGL ES 2.0,使应用程序能够逐步向应用程序添加新的视觉功能。

        OpenGL ES 3.0 规范中的新功能包括:

        • 对渲染管道进行多项增强,以加速高级视觉效果,包括:遮挡查询、变换反馈、实例渲染以及对四个或更多渲染目标的支持,
        • 高质量 ETC2/EAC 纹理压缩作为标准功能,无需为每个平台使用不同的纹理集,
        • 新版本的 GLSL ES 着色语言完全支持整数和 32 位浮点运算;
        • 大大增强了纹理功能,包括保证支持浮点纹理、3D 纹理、深度纹理、顶点纹理、NPOT 纹理、R/RG 纹理、不可变纹理、2D 阵列纹理、swizzles、LOD 和 Mip 级别钳位、无缝立方体贴图和采样器对象,
        • 一组广泛的必需、明确大小的纹理和渲染缓冲区格式,减少了实现的可变性,使编写便携式应用程序变得更加容易。

        【讨论】:

        • 应该注意,虽然 GLES3 驱动程序目前处于“测试版”。 Adreno 320(例如)不支持压缩格式的 2D 纹理数组,如果您碰巧在着色器中使用了 3 个统一缓冲区之类的东西,编译器会崩溃。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-14
        相关资源
        最近更新 更多