正文

OpenGL 簡(jiǎn) 介(8)

精通C#游戲編程 作者:(英)斯庫勒


 

OpenAL代表開放音頻庫(Open Audio Library),是一個(gè)強(qiáng)大的開源庫?!渡姹?BioShock)》、《雷神之錘4(Quake 4)》、《毀滅戰(zhàn)士3(Doom III)》和《虛幻(Unreal)》等游戲都使用了這個(gè)音頻庫。它采用OpenGL作為模型,具有相同的狀態(tài)機(jī)風(fēng)格的設(shè)計(jì)和擴(kuò)展方法。

SDL(Simple DirectMedia Layer)是一個(gè)跨平臺(tái)的庫,支持輸入、聲音和圖形。SDL在游戲開發(fā)商中非常流行,在獨(dú)立或者開源游戲中使用得尤其多。使用SDL開發(fā)的最著名的開源游戲之一是FreeCiv,它是《文明(Civilization)》的一個(gè)聯(lián)機(jī)版本。多數(shù)Linux游戲端口中也使用了SDL。

PhysFs初看起來可能是一個(gè)物理庫,但是實(shí)際上卻是一個(gè)小型的IO庫。它可以將全部游戲資源打包為一個(gè)較大的二進(jìn)制文件,或者幾個(gè)小的二進(jìn)制文件。許多商業(yè)游戲都有類似的系統(tǒng),例如《毀滅戰(zhàn)士(Doom)》的wad系統(tǒng)或《雷神之錘(Quake)》的pak系統(tǒng)。它可以使游戲在發(fā)布后的修改和更新變得更加簡(jiǎn)單。

FreeGLUT是OpenGL實(shí)用程序工具包的免費(fèi)版本。這個(gè)庫中的函數(shù)可以讓用戶馬上就能夠使用OpenGL。它還有從鍵盤和鼠標(biāo)接受輸入的方法,以及繪制各種基本形狀的方法,例如球形、立方形,甚至茶壺形(這個(gè)茶壺在計(jì)算機(jī)圖形學(xué)中非常有名,它是由Martin Newell在猶他大學(xué)求學(xué)期間進(jìn)行建模的。茶壺是一個(gè)非常復(fù)雜的表面,所以在測(cè)試新的圖形技術(shù)時(shí)非常有用。動(dòng)畫電影《玩具總動(dòng)員》中就有一個(gè)典型的茶壺模型,DirectX甚至有自己的茶壺創(chuàng)建方法D3DXCreateTeapot( )。在講授OpenGL時(shí)經(jīng)常用到FreeGLUT,但是它的功能很有限,很少用于真正的項(xiàng)目。

ODE(Open Dynamics Engine)是一個(gè)可以用在多個(gè)平臺(tái)上的物理引擎,可以完成碰撞檢測(cè)和剛體模擬。PC上的第一人稱射擊游戲《潛行者(S.T.A.L.K.E.R)》中就使用了ODE。Glfw是可以通過Tao使用的第三個(gè)可移植的OpenGL包裝器。Glfw代表OpenGL框架(OpenGL framework),它的目的是擴(kuò)展GLUT提供的功能。如果不想使用SDL,但又確實(shí)想使用框架來訪問OpenGL,就可以考慮使用Glfw。

DevIL(Developer's Image Library)是一個(gè)從磁盤加載紋理到OpenGL中的庫。DevIL與OpenGL有些類似,因?yàn)樗彩且粋€(gè)狀態(tài)機(jī),并且有類似的方法名稱。DevIL是跨平臺(tái)的,支持多種(43種)不同的圖片格式。Cg是本章前面提到的一種著色器語言。通過使用Tao.Cg,可以從文本文件或字符串中加載著色器程序,進(jìn)行處理,然后在OpenGL中使用。

Lua可能是游戲開發(fā)中最流行的腳本語言。它是一種小型的、易于嵌入的語言,表達(dá)力非常強(qiáng)。使用Tao.Lua可以在腳本和C#程序之間傳遞函數(shù)和數(shù)據(jù)。Tao.FreeType是一個(gè)基本的字體包,可以將FreeType類型的字體轉(zhuǎn)換成一幅位圖。它的接口簡(jiǎn)單易用。

Tao提供的最后一個(gè)庫是FFmpeg,這個(gè)名稱由MPEG(一個(gè)視頻標(biāo)準(zhǔn))和FF(Fast Forward,快進(jìn))組成。它提供了一種播放視頻的方式。如果想要在游戲中使用過場(chǎng)動(dòng)畫,F(xiàn)Fmpeg是一個(gè)不錯(cuò)的選擇。

Tao提供的所有庫都是完全開源的。其中的多數(shù)庫都可以免費(fèi)用在商業(yè)項(xiàng)目中,但還是有必要閱讀許可證中列出的具體說明。Tao是一個(gè)出色的程序包,剛開始涉足游戲的開發(fā)商可以把它作為一個(gè)起點(diǎn)。對(duì)每個(gè)庫的介紹不在本書的討論范圍之內(nèi),我們將只關(guān)注其中最重要的那些庫。從第5章開始,我們將使用OpenGL和Tao.Platform.Windows庫。第6章將討論DevIL。第9章將討論使用OpenAL播放聲音,以及使用SDL處理手柄輸入。每個(gè)庫都很有用,所以很有必要花些時(shí)間研究每個(gè)感興趣的庫。

2.5  小結(jié)

OpenGL和DirectX3D是業(yè)界使用的兩個(gè)主要的圖形庫。這些圖形庫是與底層的圖形硬件進(jìn)行通信的標(biāo)準(zhǔn)方式。圖形硬件通常包含幾個(gè)標(biāo)準(zhǔn)部分,在把3D頂點(diǎn)信息轉(zhuǎn)換為屏幕上顯示的2D幀時(shí)非常高效。這種從3D頂點(diǎn)到2D幀的轉(zhuǎn)換被稱為圖形流水線。圖形流水線分為兩種:不可以編程的固定流水線和可以編程的流水線,后者允許通過著色器程序控制流水線的特定階段。

Tao框架是一個(gè)實(shí)用庫的集合,其中包括OpenGL。C#可以通過Tao框架使用OpenGL編寫游戲。Tao框架還包含其他幾個(gè)對(duì)游戲開發(fā)很有幫助的庫。本書中將結(jié)合使用OpenAL、DevIL和SDL來開發(fā)一個(gè)簡(jiǎn)單的橫向卷軸射擊游戲。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)