hyde
路人甲
路人甲
  • 注册日期2003-09-24
  • 发帖数555
  • QQ
  • 铜币1457枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1443回复:0

OpenGL系列讲座(2)

楼主#
更多 发布于:2004-03-20 10:23
第二章 OpenGL概念建立
 

2.1 OpenGL基本理解
 

OpenGL是一个与硬件图形发生器的软件接口,它包括了100多个图形操作函数,开发者

可以利用这些函数来构造景物模型、进行三维图形交互软件的开发。正如上一章所述,OpenGL

是一个高性能的图形开发软件包。OpenGL支持网络,在网络系统中用户可以在不同的图形终

端上运行程序显示图形。OpenGL作为一个与硬件独立的图形接口,它不提供与硬件密切相关

的设备操作函数,同时,它也不提供描述类似于飞机、汽车、分子形状等复杂形体的图形操

作函数。用户必须从点、线、面等最基本的图形单元开始构造自己的三维模型。当然,象

OpenInventor那样更高一级的基于OpenGL的三维图形建模开发软件包将提供方便的工具。

因此OpenGL的图形操作函数十分基本、灵活。例如OpenGL中的模型绘制过程就多种多样,

内容十分丰富,OpenGL提供了以下的对三维物体的绘制方式:

     . 网格线绘图方式(wireframe)--这种方式仅绘制三维物体的网格轮廓线

. 深度优先网格线绘图方式(depth_cued)--用网格线方式绘图,增加模拟人眼看物体一

样,远处的物体比近处的物体要暗些

. 反走样网格线绘图方式(antialiased)--用网格线方式绘图,绘图时采用反走样技术

以减少图形线条的参差不齐

. 平面消隐绘图方式(flat_shade)--对模型的隐藏面进行消隐,对模型的平面单元按光

照程度进行着色但不进行光滑处理

. 光滑消隐绘图方式(smooth_shade)--对模型进行消隐按光照渲染着色的过程中再进

行光滑处理,这种方式更接近于现实

. 加阴影和纹理的绘图方式(shadows,textures)--在模型表面贴上纹理甚至于加上光

照阴影,使得三维景观象照片一样

     . 运动模糊的绘图方式(motion-blured)--模拟物体运动时人眼观察所感觉的动感现象

. 大气环境效果(atmosphere-effects)--在三维景观中加入如雾等大气环境效果,使人

身临其境

. 深度域效果(depth-of-effects)--类似于照相机镜头效果,模型在聚焦点处清晰,反

之则模糊

这些三维物体绘图和特殊效果处理方式,说明OpenGL已经能够模拟比较复杂的三维物体

或自然景观,这就是我们所面对的OpenGL!

 

 

2.2 OpenGL工作流程
 

    整个OpenGL的基本工作流程如下图:

 



                      

图1-2-1  OpenGL基本工作流程

 

其中几何顶点数据包括模型的顶点集、线集、多边形集,这些数据经过流程图的上部,

包括运算器、逐个顶点操作等;图像数据包括象素集、影像集、位图集等,图像象素数据的

处理方式与几何顶点数据的处理方式是不同的,但它们都经过光栅化、逐个片元(Fragment)

处理直至把最后的光栅数据写入帧缓冲器。在OpenGL中的所有数据包括几何顶点数据和象素

数据都可以被存储在显示列表中或者立即可以得到处理。OpenGL中,显示列表技术是一项重

要的技术。

    OpenGL要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶点计算操作都

可以针对每个顶点进行计算和操作,然后进行光栅化形成图形碎片;对于象素数据,象素操

作结果被存储在纹理组装用的内存中,再象几何顶点操作一样光栅化形成图形片元。

    整个流程操作的最后,图形片元都要进行一系列的逐个片元操作,这样最后的象素值BZ

送入帧缓冲器实现图形的显示。
.3 OpenGL图形操作步骤
 

在上一节中说明了OpenGL的基本工作流程,根据这个流程可以归纳出在OpenGL中进行

主要的图形操作直至在计算机屏幕上渲染绘制出三维图形景观的基本步骤:

(1)    根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述(OpenGL中把

点、线、多边形、图像和位图都作为基本图形单元);

(2)    把景物模型放在三维空间中的合适的位置,并且设置视点(viewpoint)以观察所感兴

趣的景观;

(3)    计算模型中所有物体的色彩,其中的色彩根据应用要求来确定,同时确定光照条件、

纹理粘贴方式等;

(4)    把景物模型的数学描述及其色彩信息转换至计算机屏幕上的象素,这个过程也就是

光栅化(rasterization)。

    在这些步骤的执行过程中,OpenGL可能执行其他的一些操作,例如自动消隐处理等。另

外,景物光栅化之后被送入帧缓冲器之前还可以根据需要对象素数据进行操作。

 


<img src="images/post/smile/dvbbs/em00.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em04.gif" />
喜欢0 评分0
夜落了,风静了,我喜欢一本书,一杯茶,一粒摇曳的烛光...
游客

返回顶部