(仅是草稿,未做整理)
第一章
导言
这份文档描述OpenGL ES图形系统具体内容,如它是一个什么样的系统,如何运作,要实现它有什么要求。我们认为读者已经有一定的计算机图形基础知识。这意味着读者要对计算机图形重要的算法和基本的图形硬件及相关内容是熟悉的。
1.1可选特性的格式(Formatting Of Optional Features)
规范中定义的一些特性是可选的,即在实现OpenGL ES时可以选择性地提供这些特性。这些可选的功能,在规范中中会先定义出来。可选的状态表格入口用灰色背景表示。
1.2 OpenGL ES图形系统定义
OpenGL ES是图形硬件的软件接口。这些接口由一系列的过程和函数。程序员就可以通过这些接口定义其对象和操作从而生成高质量的图形图像和三维对象的颜色图像。
大部分OpenGL ES要求图形硬件有一个帧缓存。多数OpenGL ES调用可以用于画点,线,多边形对象。但在有些时候,如反锯齿或纹理功能使能的时候,还是要依赖于帧缓存。甚至,有些OpenGL ES对帧控制龙为重视。
OpenGL ES1.1是基于OpengGL1.5图形系统,设计主要是用于运行一个嵌入式和移动设备的图形硬件。它删除了大量的多余和过期的功能函数,同时加入了一些新的特性。在此规范中对OpenGL ES 和OpengGL之前的不同不处没有进行详细描述,而只是在文件名为“OpenGL ES Common/Common-Lite Profile Specification(Difference Specification)”的文档中作了总结。
1.3 OpenGL ES图形系统Profiles
此规范描述了OpenGL ES 两个Profile:Common和Common Lite。有许多命令在两profile中是共用的,而有些命令是则只有一个Profile支持。
Common Lite不同于Common的地方主要是Common Lite用于简单的图形系统,不支持高性能的浮点运算。Common Lite支持带定点参数的命令,而Common同时支持带有浮点参数的命令。
两个profile的不同及只有Common profile支持的命令收集在附录C和规范中的相应章节中。
1.4 从编程者角度看OpenGL ES
对编程者来说,OpenGL ES就是一组命令,通过命令可以定义一个二维和三维的几何对象,和如何把这些对象渲染到帧缓存中。OpenGL ES提供了立即模式(immediate-mode)的接口,即定义了一个对象则将被画出。
使用OpenGL ES的典型程序中,开始于打开窗口的调用,此窗口是当前程序所要写入到帧缓存,然后使用分配一个OpenGL ES上下文和与窗口相关的调用。这些步骤的实施有时候会用通过一组API,如Khronos Native Platform Graph-icsInterface(EGL),并且文档是分开的。一旦上下文分配好,那么程序员就可以自由地使用OpenGL ES命令了。一些调用是用来画简单的几何对象,如点,线和多边形,而其他则可用来渲染,包括如何点燃和着色,及如何从用户的二维或三维模形空间转换到二维的屏幕。另外还有些调用会直接操作帧缓存如读取像素。
1.5 从实现者角度看OpenGL ES
对于实现者来说,OpenGL ES是一组通过操作图形硬件的命令。如果硬件包含了一个可访问的帧缓存,那么在主机的cpu上,OpenGL ES必须实现所有的命令。更一般情况下,图形硬件会包括一定的图形加速,如用来渲染二维线和多边形复杂的浮点处理器和处理几何数据转换和计算的光栅子系统。OpenGL ES实现者的任务是是提供cpu的软件接口,同时在图形硬件和cpu中剥离每一个OpenGL ES命令。这个剥离结果是在执行OpenGL ES调用时,能使图形硬件必须发挥出最优的性能。
OpenGL ES维持着相当量的状态信息,这些状态控制着对象如何写入帧缓存。其中的一些状态可以直接被用户所使用。他/她可以通过调用相关函数来获取这些状态值。而其中一些状态,只有对在它画的过程中的影响才是可见的。此规范的一个主要目标是使得OpenGL ES状态能更加清晰明显表明它是如何改变和效果什么。
1.6 我们的角度
我们把OpenGL ES看作是一个状态机,此状态机控制着一组画操作。这个模式生成的规范应该满足程序员和实现者的需求。但是,它不必提供一个实现。一个实现必须遵守所约定的方法。但也许有其他比已经定义的更为有效方式来实现一个特定的计算。