OpenAL代表開放音頻庫(Open Audio Library),是一個強大的開源庫?!渡姹?BioShock)》、《雷神之錘4(Quake 4)》、《毀滅戰(zhàn)士3(Doom III)》和《虛幻(Unreal)》等游戲都使用了這個音頻庫。它采用OpenGL作為模型,具有相同的狀態(tài)機風(fēng)格的設(shè)計和擴展方法。
SDL(Simple DirectMedia Layer)是一個跨平臺的庫,支持輸入、聲音和圖形。SDL在游戲開發(fā)商中非常流行,在獨立或者開源游戲中使用得尤其多。使用SDL開發(fā)的最著名的開源游戲之一是FreeCiv,它是《文明(Civilization)》的一個聯(lián)機版本。多數(shù)Linux游戲端口中也使用了SDL。
PhysFs初看起來可能是一個物理庫,但是實際上卻是一個小型的IO庫。它可以將全部游戲資源打包為一個較大的二進制文件,或者幾個小的二進制文件。許多商業(yè)游戲都有類似的系統(tǒng),例如《毀滅戰(zhàn)士(Doom)》的wad系統(tǒng)或《雷神之錘(Quake)》的pak系統(tǒng)。它可以使游戲在發(fā)布后的修改和更新變得更加簡單。
FreeGLUT是OpenGL實用程序工具包的免費版本。這個庫中的函數(shù)可以讓用戶馬上就能夠使用OpenGL。它還有從鍵盤和鼠標接受輸入的方法,以及繪制各種基本形狀的方法,例如球形、立方形,甚至茶壺形(這個茶壺在計算機圖形學(xué)中非常有名,它是由Martin Newell在猶他大學(xué)求學(xué)期間進行建模的。茶壺是一個非常復(fù)雜的表面,所以在測試新的圖形技術(shù)時非常有用。動畫電影《玩具總動員》中就有一個典型的茶壺模型,DirectX甚至有自己的茶壺創(chuàng)建方法D3DXCreateTeapot( )。在講授OpenGL時經(jīng)常用到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有些類似,因為它也是一個狀態(tài)機,并且有類似的方法名稱。DevIL是跨平臺的,支持多種(43種)不同的圖片格式。Cg是本章前面提到的一種著色器語言。通過使用Tao.Cg,可以從文本文件或字符串中加載著色器程序,進行處理,然后在OpenGL中使用。
Lua可能是游戲開發(fā)中最流行的腳本語言。它是一種小型的、易于嵌入的語言,表達力非常強。使用Tao.Lua可以在腳本和C#程序之間傳遞函數(shù)和數(shù)據(jù)。Tao.FreeType是一個基本的字體包,可以將FreeType類型的字體轉(zhuǎn)換成一幅位圖。它的接口簡單易用。
Tao提供的最后一個庫是FFmpeg,這個名稱由MPEG(一個視頻標準)和FF(Fast Forward,快進)組成。它提供了一種播放視頻的方式。如果想要在游戲中使用過場動畫,F(xiàn)Fmpeg是一個不錯的選擇。
Tao提供的所有庫都是完全開源的。其中的多數(shù)庫都可以免費用在商業(yè)項目中,但還是有必要閱讀許可證中列出的具體說明。Tao是一個出色的程序包,剛開始涉足游戲的開發(fā)商可以把它作為一個起點。對每個庫的介紹不在本書的討論范圍之內(nèi),我們將只關(guān)注其中最重要的那些庫。從第5章開始,我們將使用OpenGL和Tao.Platform.Windows庫。第6章將討論DevIL。第9章將討論使用OpenAL播放聲音,以及使用SDL處理手柄輸入。每個庫都很有用,所以很有必要花些時間研究每個感興趣的庫。
2.5 小結(jié)
OpenGL和DirectX3D是業(yè)界使用的兩個主要的圖形庫。這些圖形庫是與底層的圖形硬件進行通信的標準方式。圖形硬件通常包含幾個標準部分,在把3D頂點信息轉(zhuǎn)換為屏幕上顯示的2D幀時非常高效。這種從3D頂點到2D幀的轉(zhuǎn)換被稱為圖形流水線。圖形流水線分為兩種:不可以編程的固定流水線和可以編程的流水線,后者允許通過著色器程序控制流水線的特定階段。
Tao框架是一個實用庫的集合,其中包括OpenGL。C#可以通過Tao框架使用OpenGL編寫游戲。Tao框架還包含其他幾個對游戲開發(fā)很有幫助的庫。本書中將結(jié)合使用OpenAL、DevIL和SDL來開發(fā)一個簡單的橫向卷軸射擊游戲。