Allegro
開發者 | Allegro的開發者 |
---|---|
當前版本 | |
源代碼庫 | |
操作系統 | 跨平台 |
類型 | 多媒體和電子遊戲相關SDK |
許可協議 | Allegro 4: Giftware(類似MIT許可證) Allegro 5: Zlib |
網站 | liballeg |
Allegro是一個特別針對於電子遊戲的開發的自由軟件程式庫。 [3][4][5]
該庫提供基本二維圖形、圖像操作、音效輸出、MIDI音樂、輸入、計時器,以及額外的尋路矩陣計算、UNICODE、文件系統管理、有限而建基於軟件的三維圖形。
其版本4.0可以運行在DOS、Microsoft Windows、BeOS、Mac OS X、多種類Unix,程序只需要嵌入其API即可使用。該庫還有獨立的AmigaOS 4移植版。
該庫使用C語言編寫,適用於C或C++,其附帶很多文檔和實例。
附件
Allegro社區用戶貢獻了多種擴展,包括軸捲圖塊形式的地圖、輸入輸出各種格式(有PNG、GIF、JPEG、MPEG、Ogg、MP3、IT、S3M、XM、TTF)。其還有多個語言綁定,比如 Python、Perl、Scheme、C#、D語言等。
歷史
Allegro原本的含義是"Atari Low-Level Game Routines"[6] 。20世紀90年代初由Shawn Hargreaves為Atari ST創造,1995年Shawn因為Atari即將消失而拋棄了對其支持又引入了Borland C++ 和DJGPP編譯器。Borland C++ 在2.0版本被拋棄,DJGPP是唯一被支持的編譯器——Allegro因此只能用於DOS。1998年前後, Allegro發展出了很多版本,對應Microsoft Windows的WinAllegro、對應類Unix的XwinAllegro,這些融入了Allegro 3.9 WIP版本,這樣Allegro 4.0成為首個多平台穩定版本,當前支持Unix (Linux, FreeBSD, Irix, Solaris, Darwin), Windows (MSVC, MinGW, Cygwin, Borland C++), BeOS, QNX, Mac OS X, DOS (DJGPP, Watcom)。
硬件加速3D/2D應用於Linux、Mac OS X、DOS採用多種方式,包括AllegroGL和OpenLayer。它們是兩個附件add-on庫,通過OpenGL實現。結合Glide和MesaFX (3dfx),AllegroGL是少數對應DOS的開源3D硬件加速方案。[7]
功能
- 向量繪製:
- 像素、線、矩形、圓柱、貝塞爾曲線等幾何圖形、
- 有圖案(Pattern)或者沒有圖案的形狀填充(Shape Fill)
- 各種多邊形(Polygons):單調(Flat)、內插均勻(Gouraud)、三維紋理(3D Textured)和半透明( Translucent)
- 圖塊:
- 掩碼(Masked)、壓縮(Compressed)和編譯(Compiled)三種精靈(Sprites)
- 位塊傳輸(Blitting)、旋轉(Rotation)、拉伸(Stretching)、擠壓(Reduction)、α通道混色(Alpha Blending)、內插均勻着色(Gouraud Shading)
- 內建BMP、LBM、PCX、TGA文件格式支持,其他的可通過擴展庫支持
- 各種調色板(Color Palettes):
- 調色板的操縱(讀、寫、轉換)
- RGB和HSV兩種色彩格式(Color Formats)之間的轉換
- 文字:
- 支持多種編碼之間的轉換,默認UTF-8
- 點陣字體:掩碼(Masking)、彩色(Colouring)、對齊(Alignment)
- 其他:
- 直接在屏幕或任意大小的內存位圖(Memory Bitmaps)中進行繪製
- 硬件軸卷(Hardware Scrolling)和三緩存(Triple Buffering)(前提是該處可用)、X模式(mode-X)的分屏(Split Screen)
- 用於FLI/FLC格式的動畫函數[8]
Allegro 5
目前的開發着手在Allegro 5這條分支,4.9.14是其不穩定的版本。Allegro 5對庫的API及其大量的內部操作進行了完全重新的設計,致力於使API能更穩定地適用於多核間的協同工作。其默認使用OpenGL或DirectX硬件加速渲染後端,當前的大多數插件都需要重寫接口。
其他
參考資料
- ^ https://github.com/liballeg/allegro5/releases/tag/5.2.8.0.
- ^ Release 5.2.9.1. 2024年1月20日 [2024年6月24日].
- ^ Harbour, Jonathan. Game Programming All in One, Second Edition. Course Technology PTR. 2004. ISBN 1592003834.
- ^ Steinke, Lennart. Spielprogrammierung. BHV Verlag. 2003. ISBN 3826680758.
- ^ P. J. Deitel, P. J. C How to Program. HowtoProgram. Prentice Hall. 2006. ISBN 0-13-240416-8.
- ^ Forum posting by Shawn Hargreaves. [2009-10-26]. (原始內容存檔於2009-01-08).
- ^ Daniel Borca. Mesa 3-D graphics library. [2009-10-26]. (原始內容存檔於2009-10-25).
- ^ Allegro Introduction. [2009-10-26]. (原始內容存檔於2009-12-01).
外部連結
(英文)
- Allegro(頁面存檔備份,存於網際網路檔案館)
- Allegro 5 Documentation(加拿大服務器(頁面存檔備份,存於網際網路檔案館)、美國服務器)
- Allegro Wiki(頁面存檔備份,存於網際網路檔案館)
- Allegro 5(頁面存檔備份,存於網際網路檔案館)
- Allegro 5 Tutorials(頁面存檔備份,存於網際網路檔案館)
- allegro.cc(頁面存檔備份,存於網際網路檔案館)
- Shawn Hargreaves's Homepage(頁面存檔備份,存於網際網路檔案館)
- Games Using Allegro(頁面存檔備份,存於網際網路檔案館)