写代码是一种艺术,甚于蒙娜丽莎的微笑!

不拼搏,枉少年!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便、效率高。

OpenGL特点:

  1、OpenGL是目前用于开发可移植的、可交互的2D和3D图形应用程序的首选环境,也是目前应用最广泛的计算机图形标准。OpenGL是SGI公司开发的一套的计算机图形处理系统,是图形硬件的软件接口,GL代表图形库(Graphics Library)。OpenGL具有可移植性,任何一个OpenGL应用程序无须考虑其运行环境所在平台与操作系统,在任何一个遵循OpenGL标准的环境下都会产生相同的可视效果。

      2、OpenGL不是一种编程语言,而是一种API(Application Programming Interface,应用程序编程接口)。当我们说某个程序是基于OpenGL的或者说它是个OpenGL程序是,意思是说它是用某种编程语言如C或C++编写的,其中调用了一个或多个OpenGL库函数。作为一种API,OpenGL遵循C语言的调用约定。

      3、OpenGL主要包括三个函数库,它们是核心库、实用函数库和编程辅助库。核心库中包含了OpenGL最基本的命令函数。核心库提供了一百多个函数,这些函数都以”gl”为前缀,用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等所有的二维和三维图形操作。

      4、实用函数库是比核心库更高一层的函数库,这些函数都以”glu”为前缀。由于OpenGL是一个图形标准,是独立于任何窗口系统或操作系统的,在OpenGL中没有提供窗口管理和消息事件响应的函数,也没有鼠标和键盘读取事件的功能,所以在编程辅助库提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。这类函数以”aux”作为前缀。值得一提的是,目前AUX编程辅助库已经很大程度上被GLUT库取代了。

      5、GLUT代表OpenGL应用工具包(OpenGL Utility Toolkit),是一个与窗口系统无关的工具包。它作为AUX库的功能更强的替代品,用于隐藏不同窗口系统API的复杂性。GLUT的子程序的前缀使用”glut”。

      6、Kilgard最早在X windows上应用这个库,后来Nate Robins把它扩展到微软的Windows窗口系统。

OpenGL功能:

OpenGL 能够对整个三维模型进行渲染着色,从而绘制出与客观世界十分类似的三维景象。另外 OpenGL 还可以进行三维交互、动作模拟等。

1.模型绘制    OpenGL 能够绘制点、线、三角形、多边形、曲线和曲面。应用这些基本的形体,可以构造出几乎所有的三维模型。OpenGL 通常用模型的多边形的顶点来描述三维模型。

2.模型观察   在建立了三维景物模型后,就需要用 OpenGL 描述如何观察所建立的三维模型。观察三维模型是通过一系列的坐标变换进行的。模型的坐标变换使观察者能够在视点位置观察于视点相适应的三维模型景观。在整个三维模型的观察过程中,投影变换的类型决定观察三维模型的观察方式,不同的投影变换得到的三维模型的景象也是不同的。最后的视窗变换则对模型的景象进行裁剪缩放,即决定整个三维模型在屏幕上的图像。

3.颜色模型的指定   OpenGL 应用了一些专门的函数来指定三维模型的颜色。程序员可以选择两个颜色模型,即 RGBA 模式和颜色表模式。在 RGBA模式中,颜色直接由 RGB 值来指定;在颜色表模式中,颜色值则由颜色表中的一个颜色索引值来指定。程序员还可以选择平面着色和光滑着色两种着色方式对整个三维景观进行着色。

4.光照模型    用 OpenGL 绘制的三维模型必须加上光照才能更加的与客观物体相似。OpenGL 提供四种光(环境光、散射光、镜面反射光和发射光)的渲染方法。OpenGL 可以创建点光源、聚光灯和面光源,通过指定光源的位置和方向,以及光源的颜色和衰减属性,来产生光照。OpenGL 通过指定材质属性,来进行光照模型计算,指定物体的颜色。

5.图像效果增强功能   OpenGL 提供了一系列的增强三维景观的图像效果的函数,这些函数通过反走样,混合和雾化来增强图像的效果。反走样用于改善图像中线段图形的锯齿想像而使其更平滑,混合用于处理模型的半透明效果,雾化使得景象从视点到远处逐渐退色,形成雾的效果。这些都使场景更加的真实。

6.位图和图像处理   OpenGL 提供了专门对位图和图像进行操作的函数。包括位图和图像的绘制,图像像素数据的读取、写入和复制(包括把处

理器内存中的像素数据写入到帧缓存中,以及将帧缓存中的像素数据写入到处理器内存中,在不同的缓存之间复制以及在同一个缓存内部复制),图像数据格式的转换匹配。OpenGL 提供的图像处理子集还可以根据颜色表来代替像素值,用卷积来处理图像,使用颜色矩阵变换颜色空间,以及统计图像数据。

7.纹理映射   三维景观因缺少景物的具体细节而显得不够真实,为了更加逼真地表现三维景物,OpenGL 提供了纹理映射功能,包括一维、二维和三维纹理映射,mipmap 和多重纹理操作,以及复杂的环境映射。还提供了驻留纹理工作集来加速和优化纹理的操作。从而可以绘制出更逼真的三维景观。

8.实时动画   为了获得平滑的动画效果,OpenGL 提供了双缓存技术。它先在内存的一个缓存中生成下一个图像,然后把已经生成的图像从内存拷贝到屏幕上。

9.交互技术   目前许多图形应用需要人机交互,OpenGL 提供了方便的三维图形人机交互接口,用户可以选择和修改三维场景中的物体。OpenGL提供选择和反馈机制来实现这些。

OpenGL 被设计成独立于硬件、独立于窗口系统,在各种操作系统上都可以运行,并能在网络环境下以客户机/服务器模式工作,是图形处理、科学计算等高端应用领域的标准图形库。

posted on 2016-01-12 22:12  RunningSnail  阅读(1851)  评论(5编辑  收藏  举报