浅析OpenGL

来源:互联网 发布:临沂seo网站推广 编辑:程序博客网 时间:2024/06/06 03:33

                                                                             浅析 OpenGL

                                                                

一.OpenGL 基本介绍 (参考维基百科)               

OpenGL Open Graphics Library的缩写,中文名叫开放图形库。它是定义了一个跨编程语言,跨平台的应用程序接口的规范。用于生成二维和三维图像。它是独立于视窗操作系统或其他操作系统的,也是网络透明的,就是它不受平台影响,在运行各种操作系统的各种计算机上都可用,能在网络环境下以客户/服务器模式工作。OpenGLAPI定义了很多可以被客户端程序调用的函数。

 

 二.OpenGL 发展历史

OpenGL 最初是美国SGI公司为图形工作站开发的一种功能强大的三维图形机制,源于IRIS GL,在跨平台移植过程中发展成为OpenGL,后来被ARB控制,ARB成员以投票的方式产生标准,并制成文档公布,各软硬件厂商据此开发自己系统上的实现。2006ARB将标准控制权交给Khronos Group

 

.OpenGL 功能(摘自搜狗百科)                     

1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥多面体茶壶等)以及复杂曲线和曲面绘制函数。

2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比镜像种变换,投影变换有平行投影(又称正射投影和透视投 影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。

3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引Color Index)。

4.光照和材质设置:OpenGL光有辐射光(Emitted Light)、环境光Ambient Light)、漫反射Diffuse Light)和镜面光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。

5:纹理映射Texture Mapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。

6:位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。

7:双缓存动画(Double Buffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。

.OpenGL由若干函数库组成    (源自网络)

   其中包含核心库,实用库,辅助库,工具库和扩展库。

核心库:包含最基本的命令函数,可在任何OpenGL平台上应用,处理几何模型的建立、描述、坐标变换、颜色与光照、纹理映射、缓冲区操作、曲线曲面计算等,以gl为函数的前缀

实用库:比核心库更高层的实用函数组合,完成那个纹理映射、坐标变换、区域分割、多边形实体(圆柱、球体)等绘制,以glu为函数前缀

辅助库:与窗口和操作系统无关,提供窗口管理、鼠标、键盘事件处理和若干三位几何对象的创建,以aux为函数前缀

工具库:独立于操作系统的实用工具包,实现一个简单的窗口OpenGL编程接口,以glut为函数前缀。

扩展库:在具体的窗口系统下的扩展, a. X window下的扩展库函数以glx为函数前缀,   b. Windows平台下的扩展库函数以wgl为函数前缀。

.OpenGLDirectX

查阅相关资料,然后来总结一下他们的渊源。早年OpenGL在游戏领域是对Directx有压倒性的优势,因为ARB对其优化较少,然后Dirextx迎头赶上。自06openGL交由Khronos Group 掌管后也渐渐赶上。从性能和易用性来说和DirectX相差不大。但是在相比DirectX没有突出优点的情况下(除了跨平台),已经习惯使用DirectX的游戏厂商也不可能重新投出OpenGL的怀抱。

还有一点就是OpenGL只是一个单纯的图形库,而DirectX是包含图形(Direct3D), 声音(DirectSound), 输入(DirectInput), 网络(DirectPlay)的一整套游戏开发解决方案。对开发者来说使用DirectX显然要方便的多。

其次,OpenGL不淘汰老的API,保留了很多对硬件和驱动都不友好的API,仅有在跨平台和早期对精度的要求比DirectX高的优点。

 

.OpenGL家族:

    

名称

侧重点

OpenGL ES

它针对多种嵌入式系统专门设计 包括控制台、移动电话、手持设备、家电设备和汽车。它由精心定义的桌面OpenGL子集组成,创造了软件与图形加速间灵活强大的底层交互接口。 OpenGL ES 包含浮点运算和定点运

OpenCL

是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理(GPU)Cell类型架构以及数字信号处理器(DSP)等其他并行处理器侧重于性能的提升。

WebGL

WebCL项目即用Javascriptweb上实现OpenCL,允许web开发者可以直接接触到GPU和多核CPU这些比较大规模的并行编程, 当webCL结合了webGL和其它技术标准, 会使web上的交互式应用变得更加强大侧重于在web上的性能提升。

 

 

0 0