文档介绍:OpenGL编程基础
*
*
OpenGL的功能:
模型绘制 –绘制点、线和多边形,构造三维模型。
模型观察 – 建立变换(坐标变换,投影变换,视窗变换)。
颜色模式的指定:RGBA模式和颜色索引模式
光照应用
图象效果增强:反走样、混合和雾化
位图和图象处理
纹理映射
实时动画:双缓存技术(double buffer)
交互技术 –提供人机交互的接口。
OpenGL的特点
从程序开发人员的角度来看,OpenGL是一组绘图命令的API集合。利用这些API能够方便地描述二维和三维几何物体,并控制这些物体按某种方式绘制到显示缓冲区中。OpenGL的API集提供了物体描述、平移、旋转、缩放、光照、纹理、材质、像素、位图、文字、交互以及提高显示性能等方面的功能,基本涵盖了开发二、三维图形程序所需的各个方面。与一般的图形开发工具相比,OpenGL具有以下几个突出特点:
(1)跨平台特性
OpenGL与硬件、窗口和操作系统是相互独立的。为了构成一个完整功能的图形处理系统,其设计实现共分 5 层:图形硬件、操作系统、窗口系统、 OpenGL和应用软件。
因而, OpenGL可以集成到各种标准窗口和操作系统中。例如,操作系统包括UNIX,Windows NT, Windows 95/98, DOS等;窗口系统包括X Windows, Microsoft Windows等。
OpenGL图形函数定义独立于任何程序设计语言,在各种编程语言中,如C,C++,FORTRAIN,Ada和Java等,都可以调用OpenGL的库函数。
(2)应用的广泛性
OpenGL是目前最主要的二、三维交互式图形应用程序开发环境,已成为业界最受推荐的图形应用编程接口。自从1992年发表以来,OpenGL已被广泛地应用于CAD/CAM、三维动画、数字图像处理以及虚拟现实等领域,Kinetix公司的3D Studio Max就是突出的代表。无论是在PC机上,还是在工作站甚至是大型机和超级计算机上,OpenGL都能表现出它的高性能和强大威力。
(3)网络透明性
建立在客户/服务器模型上的网络透明性是OpenGL的固有特性,它允许一个运行在工作站上的进程在本机或通过网络在远程工作站上显示图形。利用这种性质能够均衡各工作站的工作负荷,共同承担图形应用任务。
(4)高质量和高性能
无论是在CAD/CAM、三维动画还是可视化仿真等领域,OpenGL高质量和高效率的图形生成能力都能得到充分的体现。在这些领域中,开发人员可以利用OpenGL制作出效果逼真的二、三维图像来。
(5)出色的编程特性
   OpenGL在各种平台上已有多年的应用实践,加上严格的规范控制,因此OpenGL具有良好的稳定性。
OpenGL具有充分的独立性与易使用性等。
*
*
2、OpenGL的工作方式
(1)体系结构
一个完整的窗口系统的OpenGL图形处理系统的结构如右图所示:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件。
*
*
(2)OpenGL的流水线
当应用程序进行OpenGL API函数调用时,OpenGL命令将被放在一个命令缓冲区中,这样,命令缓冲区中包含了大量的命令、顶点数据和纹理数据。当这个缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。
*
*
(3)OpenGL状态机制
OpenGL的工作方式是一种状态机制,它可以进行各种状态或模式设置,这些状态或模式在重新改变它们之前一直有效。
状态变量可以通过glEnable()、glDisable()这两个函数来设置成有效或无效状态 。
另外可以用下列四个函数来获取某个状态变量的值:glGetBooleanv()、glGetDoublev()、glGetFloatv()和glGetIntegerv()。