OpenGL ES 3.0-简介

OpenGL ES概况

  • OpenGL ES ( OpenGL for Embedded Systems)是以手持和嵌入式设备为目标的高级3D图形应用程序编程接口( API)

  • OpenGL ES是当今智能手机中占据统治地位的图形API其作用范围已经扩展到桌面

  • OpenGL ES支持的平台包括iOSAndroidBlackBerrybada
    LinuxWindows,它还是基于浏览器的3D图形Web标准WebGL的基础。

  • 使用Android4.3以上版本的设备和使用iOS7iPhone 5s以后的设备都已经支持OpenGL ES 3.0。

  • OpenGL ES 3.0向后兼容OpenGL ES 2.0,也就是说,为OpenGL ES 2.0编写的应用程序在OpenGL ES 3.0中可以继续使用。

OpenGL ES规范

由于OpenGL是广泛采用的3D API,因此从桌面OpenGL API开始开发手持和嵌人式设备的开放标准3D API,然后修改它以符合手持和嵌人式设备领域需求和限制就很有意义了。在OpenGL ES的早期版本(1.0、1.1 和2.0)中,设计时考虑了设备的限制,包括有限的处理能力和内存可用性、低内存带宽和电源消耗的敏感性。工作组使用如下标准定义OpenGL ES规范:

  • OpenGL API规模庞大且复杂,OpenGL ES工作组的目标是创建适合于受限设备的API。为了实现这一目标,工作组从OpenGL API中删除任何冗余。在相同操作可以多种方式执行的情况下,采用最实用的方法,将多余的技术删除。指定几何形状就是一个好的例子,在OpenGL中应用程序可以使用立即模式、显示列表或者顶点数组。在OpenGL ES中,只存在顶点数组,而删除了立即模式和显示列表。

  • 删除冗余是个重要的目标,但是维护与OpenGL的兼容性也很重要。OpenGL ES尽一切可能设计成可以运行用OpenGL功能的嵌入式子集编写的程序。这是一个重要的目标,因为这使得开发人员可以使用两个API并开发使用相同功能子集的应用程序和工具。

  • 引入新功能来处理手持和嵌人式设备的特定限制。例如,为了降低电源消耗,提高着色器的性能,在着色语言中引人了精度限定符

  • OpenGL ES的设计者旨在确保实现图像质量的最小功能集。在早期的手持式设备中,屏幕尺寸有限,必须尽可能保证在屏幕上绘制的像素质量。

  • OpenGL ES工作组希望确保任何OpenGL ES实现都能够满足图像质量、正确性和稳定性的某种可接受和公认的标准。这通过开发相关的相容性测试来实现, OpenGL ES实现必须通过这些测试才被视为兼容。

当然,设计OpenGL ES旧版本时需要考虑的一些限制现在已经不再重要。例如,手持设备现在配备了大尺寸的屏幕(有些提供了比大部分桌面PC显示器更高的分辨率)。此外,许多手持设备配备了高性能的多核CPU和大量内存在开发OpenGL ES 3.0 时,Khronos 组织的重点转向手持应用相关功能的合适市场时机,而不是应付设备的有限能力。

OpenGL ES 3.0

OpenGL ES 3.0实现了具有可编程着色功能的图形管线。

它由两个规范组成:

  • OpenGL ES 3.0 API规范
  • OpenGLES着色语言3.0规范(OpenGL ES SL)

下图展示了OpenGL ES 3.0图形管线,图中带有阴影的方框表示OpenGL ES 3.0中管线的可编程阶段。 有关其各个阶段的概述参见我的这一篇文章:OpenGL ES 3.0-图形管线各阶段概述

OpenGL ES 3.0-简介_第1张图片
OpenGL ES 3.0图形管线

你可能感兴趣的:(OpenGL ES 3.0-简介)