Android OpenGL (1):详解

Android OpenGL (一):详解
什么是OpenGL
OpenGL被定义为”图形硬件的一种软件接口”.实质上是3D图形和模型库,具有高度可移植性,具有非常快的速度.可以创建优雅漂亮的3D图形,具有出色的视觉质量.并且速度远快于光线追踪仪或软件渲染引擎.最初,他使用GI(SiliconGraphics,Inc)精心开发和优化的算法.SGI是一家久负盛名的公司,在计算机和动画方面处于领先的地位.随着其他厂商的奉献,OpenGL得到了不断的发展.

OpenGL并不是一种像C和C++这样的编程语言,它更像是一个C运行函数库,提供了一些预包装的功能.实际上,并不存在像OpenGL程序这类东西,而是开发人员所写的程序,恰好使用了OpenGL作为编程接口之一.一般而言,OpenGL是由那些专门用于显示和操纵3D图形的计算机硬件所使用的.纯软件的通用OpenGL实现也是可能的.微软实现方案类似于这种.纯软件实现,性能有影响.OpenGL使用非常广泛,CAD制图,电影特效.随着硬件加速以及高速的PC微处理器的普及,3D图形现已成为消费者和商业程序的典型组件,不在局限于游戏和科学应用.

标准演化
OpenGL前身是SGI公司的IRIS GL,也是SGI对IRIS GL的移植性进行改进和提高的结果.这个新的API不仅具有GL的功能,而且是一个开发的标准.他的输入来自于其他图形厂商,并且更容易应用到其他平台和操作系统.从根本上,OpenGL就是为3D几何图形处理量身定做的.

OpenGL ARB
SGI希望更多计算机能够运行OpenGL软件,因此诞生了ARB(OpenGL Architecture Reiview Board),尽管SGI控制OpenGL API,但ARB的创立者还包括SGI DEC IBM Intel Microsoft.ARB每隔4年召开一次会议,对规范进行维护和改善,并出台对OpenGL标准进行升级.2006年SGI公司已经破产,把OpenGL标准控制从ARB移交给了新的工作组:The Khronos Group(www.khronos.org).Khronos是一个由它的成员提供资金的行业协会,专注于开放媒体标准的创建和维护.大多数ARB成员也成为了Khronos成员,因此变动没有他打破.今天,Khronos小组发展和升级了OpenGL以及姊妹API-OpenGL ES.

OpenGL以两种形式存在.第一种是行业标准,是由OpenGL规范定义的.像ATI,NVIDIA或Apple这样的硬件厂商可以
获取这个规范并进行实现.第二种形式是OpenGL实现.

OpenGL的未来
由开发人员主导,是windows特定渲染技术的替代者,并受到所有主要操纵系统和硬件设备的支持.甚至支持3D图形的
手机也支持OpenGL的一个子集.称为OpenGL ES.


2.2OpenGL工作原理
OpenGL是一种过程性而不是描述性的图形API.程序员也不需要描述场景和外观,而是事先确定一些操作步骤,实现一定特效.这些步骤需要调用许多OpenGL命令.这些命令可以在三维空间中绘制各种图元,如点,直线,多边形.另外,OpenGL还支持光照和着色,纹理贴图,混合,透明,动画以及特效.OpenGL没有包含任何窗口管理,用户交互和文件IO.每个宿主环境(Windows/mac OS)都提供了函数来实现这些功能,并负责实现一些方法,向OpenGL递交窗口绘图控制.
我们无法使用类似”OpenGL文件格式”这样的东西表示模型或虚拟环境,因为他们不存在.

2.2.1通用实现
通用实现是软件实现,硬件实现是显卡或图像生成器.
Android OpenGL (1):详解

2.2.2硬件实现
硬件实现通常采用图形卡驱动程序的形式.

Android OpenGL (1):详解


2.2.3管线
管线(pipeline)是一个过程,可能涉及两个或多个独特的阶段或步骤.应用程序进行OpenGL函数调用时,这些命令被
放置在一个命令缓冲区.该缓冲区最终填满了命令,定点数据,纹理数据等东西.缓冲区被刷新时,命令和数据就传递给
下一个阶段.

Android OpenGL (1):详解