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

OpenGL系列讲座(3)

楼主#
更多 发布于:2004-03-20 10:25
第三章 Windows NT环境下的OpenGL
 

3.1 Windows NT下的OpenGL函数
 

如前面所述,Windows NT下的OpenGL同样包含100多个库函数,这些函数都按一定的

格式来命名,即每个函数都以gl开头。Windows NT下的OpenGL除了具有基本的OpenGL函

数外,还支持其他四类函数:

   (1) OpenGL实用库:43个函数,每个函数以glu开头;

   (2) OpenGL辅助库:31个函数,每个函数以aux开头;

   (3) Windows专用库函数(WGL):6个函数,每个函数以wgl开头;

   (4) Win32 API函数:5个函数,函数前面没有专用前缀;

   在OpenGL中有115个核心函数,这些函数是最基本的,它们可以在任何OpenGL的工作平

台上应用。这些函数用于建立各种各样的形体,产生光照效果,进行反走样以及进行纹理映射,

进行投影变换等等。由于这些核心函数有许多种形式并能够接受不同类型的参数,实际上这

些函数可以派生出300多个函数。

   OpenGL的实用函数是比OpenGL核心函数更高一层的函数,这些函数是通过调用核心函数

来起作用的。这些函数提供了十分简单的用法,从而减轻了开发者的编程负担。OpenGL的实

用函数包括纹理映射、坐标变换、多边形分化、绘制一些如椭球、圆柱、茶壶等简单多边形

实体(本书将详细讲述这些函数的具体用法)等。这部分函数象核心函数一样在任何OpenGL

平台都可以应用。

OpenGL的辅助库是一些特殊的函数,这些函数本来是用于初学者做简单的练习之用,因

此这些函数不能在所有的OpenGL平台上使用,在Windows NT环境下可以使用这些函数。这

些函数使用简单,它们可以用于窗口管理、输入输出处理以及绘制一些简单的三维形体。为

了使OpenGL的应用程序具有良好的移植性,在使用OpenGL辅助库的时候应谨慎。

   6个WGL函数是用于连接OpenGL和WindowsNT,这些函数用于在WindowsNT环境下的

OpenGL窗口能够进行渲染着色,在窗口内绘制位图字体以及把文本放在窗口的某一位置等。

这些函数把Windows和OpenGL揉合在一起。

   最后的5个Win32函数用于处理象素存储格式和双缓冲区,显然这些函数仅仅能够用于

Win32系统而不能用于其他OpenGL平台。

 

 

3.2 OpenGL基本功能
 

OpenGL能够对整个三维模型进行渲染着色,从而绘制出与客观世界十分类似的三维景

象。另外OpenGL还可以进行三维交互、动作模拟等。具体的功能主要有以下这些内容。

   (1)模型绘制

OpenGL能够绘制点、线和多边形。应用这些基本的形体,可以构造出几乎所有的三维

模型。OpenGL通常用模型的多边形的顶点来描述三维模型。如何通过多边形及其顶点来描述

三维模型,本书的基础篇和提高篇中有详细的介绍。

   (2)模型观察

在建立了三维景物模型后,就需要用OpenGL描述如何观察所建立的三维模型。观察三

维模型是通过一系列的坐标变换进行的。模型的坐标变换在使观察者能够在视点位置观察与

视点相适应的三维模型景观。在整个三维模型的观察过程中,投影变换的类型决定观察三维

模型的观察方式,不同的投影变换得到的三维模型的景象也是不同的。最后的视窗变换则对

模型的景象进行裁剪缩放,即决定整个三维模型在屏幕上的图象。

   (3)颜色模式的指定

OpenGL应用了一些专门的函数来指定三维模型的颜色。程序开发者可以选择二个颜色模

式,即RGBA模式和颜色表模式。在RGBA模式中,颜色直接由RGB值来指定;在颜色表模式

中,颜色值则由颜色表中的一个颜色索引值来指定。开发者还可以选择平面着色和光滑着色

二种着色方式对整个三维景观进行着色。

   (4)光照应用

用OpenGL绘制的三维模型必须加上光照才能更加与客观物体相似。OpenGL提供了管理

四种光(辐射光、环境光、镜面光和漫反射光)的方法,另外还可以指定模型表面的反射特性。

   (5)图象效果增强

   OpenGL提供了一系列的增强三维景观的图象效果的函数,这些函数通过反走样、混合和

雾化来增强图象的效果。反走样用于改善图象中线段图形的锯齿而更平滑,混合用于处理模

型的半透明效果,雾使得影像从视点到远处逐渐褪色,更接近于真实。

   (6)位图和图象处理

   OpenGL还提供了专门对位图和图象进行操作的函数。

   (7)纹理映射

   三维景物因缺少景物的具体细节而显得不够真实,为了更加逼真地表现三维景物,OpenGL

提供了纹理映射的功能。OpenGL提供的一系列纹理映射函数使得开发者可以十分方便地把真

实图象贴到景物的多边形上,从而可以在视窗内绘制逼真的三维景观。

   (8)实时动画

   为了获得平滑的动画效果,需要先在内存中生成下一幅图象,然后把已经生成的图象从内

存拷贝到屏幕上,这就是OpenGL的双存技术(double buffer)。OpenGL提供了双缓存技术的

一系列函数。

   (9)交互技术

   目前有许多图形应用需要人机交互,OpenGL提供了方便的三维图形人机交互接口,用户

可以选择修改三维景观中的物体。

 

3.3 Windows NT下OpenGL的结构
 

   OpenGL的作用机制是客户(client)/服务器(sever)机制,即客户(用OpenGL绘制景物的

应用程序)向服务器(即OpenGL内核)发布OpenGL命令,服务器则解释这些命令。大多数情况

下,客户和服务器在同一机器上运行。正是OpenGL的这种客户/服务器机制,OpenGL可以十

分方便地在网络环境下使用。因此Windows NT下的OpenGL是网络透明的。

   正象Windows的图形设备接口(GDI)把图形函数库封装在一个动态链接库(Windows NT下

的GDI32.DLL)内一样,OpenGL图形库也被封装在一个动态链接库内(OPENGL32.DLL)。受客户

应用程序调用的OpenGL函数都先在OPENGL32.DLL中处理,然后传给服务器WINSRV.DLL。

OpenGL的命令再次得到处理并且直接传给Win32的设备驱动接口(Device Drive

 Interface,DDI),这样就把经过处理的图形命令送给视频显示驱动程序。下图简要说明这个

过程:

 

  

 

           图1-3-1   OpenGL在Windows NT 下运行机制

 

   在三维图形加速卡的GLINT图形加速芯片的加速支持下,二个附加的驱动程序被加入这个

过程中。一个OpenGL可安装客户驱动程序(Installable Client Driver,ICD)被加在客户这

一边,一个硬件指定DDI(Hardware-specific DDI)被加在服务器这边,这个驱动程序与Wind32

DDI是同一级别的。


 

  

            图1-3-2   在三维图形加速下OpenGL运行机制

 

喜欢0 评分0
夜落了,风静了,我喜欢一本书,一杯茶,一粒摇曳的烛光...
游客

返回顶部