提要:本文重點討論開源游戲開發(fā)庫Allegro(Allegro低級游戲例程),同時涉及到一些深度技術并提供了一個簡單的示例程序,幫你進一步確定它是否是適合你的開發(fā)平臺。
一、 一個適于多環(huán)境的引擎
Allegro最開始被研發(fā)于八十年代后期古老的Atari ST平臺上,隨后被快速地移植到流行的DJGPP環(huán)境(一個在九十年代早期流行的32位的MS-DOS擴展程序)。此后,Allegro被移植到最為流行的Windows C++開發(fā)環(huán)境中,包括VS,MinGW,Cygwin和Borland C++。另外的支持它的平臺包括Linux,BeOS,QNX,Mac OSX以及幾乎任何其它帶有X11庫的Unix平臺上。
Allegro能著色到各種類型的位圖和硬件加速的環(huán)境中,例如DirectX,XWindows,SVGAlib,F(xiàn)reeBE/AF,CGDirectDisplay,QuickDraw,等等。Allegro并不想提供它自己的3D環(huán)境或模擬器,但是OpenGL可以被容易地集成,這是通過使用AllegroGL庫-它提供了一個類似于GLUT的接口(包括擴展管理)-實現(xiàn)的。
二、 性能概要
在進一步使用API開發(fā)前,讓我們看一下Allegro提供的總體功能:
·具體到像素級的繪圖函數(shù),包括平坦陰影,gouraud陰影,紋理貼圖,z緩沖的多邊形和圓繪制,填充,貝塞爾樣條曲線,圖案填充,精靈,blitting(位圖復制),位圖計算縮放和旋轉,半透明/光效果以及比例字體支持的文本輸出
·FLI/FLC(在計算機生成的動畫方面,這種格式比MPEG有更高的壓縮性能)動畫播放器
·播放后臺MIDI音樂,可達64種同時的聲音效果,并能錄制樣本波形和MIDI輸入(聲音平臺支持,包括WaveOut,DirectSound,OSS,ESD,CoreAudio和QuickTime,等等)
·容易地存取鼠標,鍵盤,游戲桿等設備,還支持高分辨率定時器中斷,包括一個DOS版本的垂直折回中斷模擬器
·讀/寫LZSS壓縮文件的例程
·數(shù)學函數(shù),包括定點算術,表查找和3D矢量/矩陣/四元數(shù)操作
·GUI對話框管理器和文件選擇器
·內建地支持16位和UTF-8格式的Unicode字符
三、 使用引擎
使用Allegro進行開發(fā),就象在許多其它游戲場合下一樣,游戲的總體結構都包括游戲開始前的初始化,游戲循環(huán)以及游戲完成后的清理。初始化意味著既包含Allegro啟動代碼也包含在開始的位置實現(xiàn)基本地裝載或生成你的游戲級別。在創(chuàng)建你的初始化代碼時,啟動Allegro基本上沒有什么代價付出(見圖1).
如果你需要很多屏幕相關的真實性能,建議你首先禮貌地用get_gfx_mode_list()函數(shù)查詢一下可用方式:
#include //必須放于系統(tǒng)頭文件的引用之后
set_color_depth(32); // 缺省情況下使用8位顏色
if (set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0) != 0) {
abort_on_error("Couldn’t set a 32 bit color resolution");
}
set_gfx_mode()的最后兩個參數(shù)用于指定虛擬緩沖區(qū)的大小-我們的圖形屏幕存儲于其中。這可以使創(chuàng)建一個卷邊游戲-其中地形是連續(xù)移動的-變得容易。例如,你可能要使虛擬緩沖區(qū),比方說,寬出20%以留出足夠的空間來平滑卷動新的精靈和地形。
一、 一個適于多環(huán)境的引擎
Allegro最開始被研發(fā)于八十年代后期古老的Atari ST平臺上,隨后被快速地移植到流行的DJGPP環(huán)境(一個在九十年代早期流行的32位的MS-DOS擴展程序)。此后,Allegro被移植到最為流行的Windows C++開發(fā)環(huán)境中,包括VS,MinGW,Cygwin和Borland C++。另外的支持它的平臺包括Linux,BeOS,QNX,Mac OSX以及幾乎任何其它帶有X11庫的Unix平臺上。
Allegro能著色到各種類型的位圖和硬件加速的環(huán)境中,例如DirectX,XWindows,SVGAlib,F(xiàn)reeBE/AF,CGDirectDisplay,QuickDraw,等等。Allegro并不想提供它自己的3D環(huán)境或模擬器,但是OpenGL可以被容易地集成,這是通過使用AllegroGL庫-它提供了一個類似于GLUT的接口(包括擴展管理)-實現(xiàn)的。
二、 性能概要
在進一步使用API開發(fā)前,讓我們看一下Allegro提供的總體功能:
·具體到像素級的繪圖函數(shù),包括平坦陰影,gouraud陰影,紋理貼圖,z緩沖的多邊形和圓繪制,填充,貝塞爾樣條曲線,圖案填充,精靈,blitting(位圖復制),位圖計算縮放和旋轉,半透明/光效果以及比例字體支持的文本輸出
·FLI/FLC(在計算機生成的動畫方面,這種格式比MPEG有更高的壓縮性能)動畫播放器
·播放后臺MIDI音樂,可達64種同時的聲音效果,并能錄制樣本波形和MIDI輸入(聲音平臺支持,包括WaveOut,DirectSound,OSS,ESD,CoreAudio和QuickTime,等等)
·容易地存取鼠標,鍵盤,游戲桿等設備,還支持高分辨率定時器中斷,包括一個DOS版本的垂直折回中斷模擬器
·讀/寫LZSS壓縮文件的例程
·數(shù)學函數(shù),包括定點算術,表查找和3D矢量/矩陣/四元數(shù)操作
·GUI對話框管理器和文件選擇器
·內建地支持16位和UTF-8格式的Unicode字符
三、 使用引擎
使用Allegro進行開發(fā),就象在許多其它游戲場合下一樣,游戲的總體結構都包括游戲開始前的初始化,游戲循環(huán)以及游戲完成后的清理。初始化意味著既包含Allegro啟動代碼也包含在開始的位置實現(xiàn)基本地裝載或生成你的游戲級別。在創(chuàng)建你的初始化代碼時,啟動Allegro基本上沒有什么代價付出(見圖1).
如果你需要很多屏幕相關的真實性能,建議你首先禮貌地用get_gfx_mode_list()函數(shù)查詢一下可用方式:
#include //必須放于系統(tǒng)頭文件的引用之后
set_color_depth(32); // 缺省情況下使用8位顏色
if (set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0) != 0) {
abort_on_error("Couldn’t set a 32 bit color resolution");
}
set_gfx_mode()的最后兩個參數(shù)用于指定虛擬緩沖區(qū)的大小-我們的圖形屏幕存儲于其中。這可以使創(chuàng)建一個卷邊游戲-其中地形是連續(xù)移動的-變得容易。例如,你可能要使虛擬緩沖區(qū),比方說,寬出20%以留出足夠的空間來平滑卷動新的精靈和地形。