频道栏目
  • 2.4 Tao框架
  • Tao框架是C#使用OpenGL库的一种方式。Tao包装了许多C库(见表2-1),并使得在C#中使用这些函数变得很简单。Tao中还绑定了Mono,所以也可以用在Linux和Mac中。

    通过Tao,C#不只可以使用OpenGL,还可以使用其他一些有用的库。


    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处理手柄输入。每个库都很有用,所以很有必要花些时间研究每个感兴趣的库。


本书试读章节

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站