正文

OpenGL 简 介(8)

精通C#游戏编程 作者:(英)斯库勒


 

OpenAL代表开放音频库(Open Audio Library),是一个强大的开源库。《生化奇兵(BioShock)》、《雷神之锤4(Quake 4)》、《毁灭战士3(Doom III)》和《虚幻(Unreal)》等游戏都使用了这个音频库。它采用OpenGL作为模型,具有相同的状态机风格的设计和扩展方法。

SDL(Simple DirectMedia Layer)是一个跨平台的库,支持输入、声音和图形。SDL在游戏开发商中非常流行,在独立或者开源游戏中使用得尤其多。使用SDL开发的最著名的开源游戏之一是FreeCiv,它是《文明(Civilization)》的一个联机版本。多数Linux游戏端口中也使用了SDL。

PhysFs初看起来可能是一个物理库,但是实际上却是一个小型的IO库。它可以将全部游戏资源打包为一个较大的二进制文件,或者几个小的二进制文件。许多商业游戏都有类似的系统,例如《毁灭战士(Doom)》的wad系统或《雷神之锤(Quake)》的pak系统。它可以使游戏在发布后的修改和更新变得更加简单。

FreeGLUT是OpenGL实用程序工具包的免费版本。这个库中的函数可以让用户马上就能够使用OpenGL。它还有从键盘和鼠标接受输入的方法,以及绘制各种基本形状的方法,例如球形、立方形,甚至茶壶形(这个茶壶在计算机图形学中非常有名,它是由Martin Newell在犹他大学求学期间进行建模的。茶壶是一个非常复杂的表面,所以在测试新的图形技术时非常有用。动画电影《玩具总动员》中就有一个典型的茶壶模型,DirectX甚至有自己的茶壶创建方法D3DXCreateTeapot( )。在讲授OpenGL时经常用到FreeGLUT,但是它的功能很有限,很少用于真正的项目。

ODE(Open Dynamics Engine)是一个可以用在多个平台上的物理引擎,可以完成碰撞检测和刚体模拟。PC上的第一人称射击游戏《潜行者(S.T.A.L.K.E.R)》中就使用了ODE。Glfw是可以通过Tao使用的第三个可移植的OpenGL包装器。Glfw代表OpenGL框架(OpenGL framework),它的目的是扩展GLUT提供的功能。如果不想使用SDL,但又确实想使用框架来访问OpenGL,就可以考虑使用Glfw。

DevIL(Developer's Image Library)是一个从磁盘加载纹理到OpenGL中的库。DevIL与OpenGL有些类似,因为它也是一个状态机,并且有类似的方法名称。DevIL是跨平台的,支持多种(43种)不同的图片格式。Cg是本章前面提到的一种着色器语言。通过使用Tao.Cg,可以从文本文件或字符串中加载着色器程序,进行处理,然后在OpenGL中使用。

Lua可能是游戏开发中最流行的脚本语言。它是一种小型的、易于嵌入的语言,表达力非常强。使用Tao.Lua可以在脚本和C#程序之间传递函数和数据。Tao.FreeType是一个基本的字体包,可以将FreeType类型的字体转换成一幅位图。它的接口简单易用。

Tao提供的最后一个库是FFmpeg,这个名称由MPEG(一个视频标准)和FF(Fast Forward,快进)组成。它提供了一种播放视频的方式。如果想要在游戏中使用过场动画,FFmpeg是一个不错的选择。

Tao提供的所有库都是完全开源的。其中的多数库都可以免费用在商业项目中,但还是有必要阅读许可证中列出的具体说明。Tao是一个出色的程序包,刚开始涉足游戏的开发商可以把它作为一个起点。对每个库的介绍不在本书的讨论范围之内,我们将只关注其中最重要的那些库。从第5章开始,我们将使用OpenGL和Tao.Platform.Windows库。第6章将讨论DevIL。第9章将讨论使用OpenAL播放声音,以及使用SDL处理手柄输入。每个库都很有用,所以很有必要花些时间研究每个感兴趣的库。

2.5  小结

OpenGL和DirectX3D是业界使用的两个主要的图形库。这些图形库是与底层的图形硬件进行通信的标准方式。图形硬件通常包含几个标准部分,在把3D顶点信息转换为屏幕上显示的2D帧时非常高效。这种从3D顶点到2D帧的转换被称为图形流水线。图形流水线分为两种:不可以编程的固定流水线和可以编程的流水线,后者允许通过着色器程序控制流水线的特定阶段。

Tao框架是一个实用库的集合,其中包括OpenGL。C#可以通过Tao框架使用OpenGL编写游戏。Tao框架还包含其他几个对游戏开发很有帮助的库。本书中将结合使用OpenAL、DevIL和SDL来开发一个简单的横向卷轴射击游戏。


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号