Allegro

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻
Allegro
徽标
徽标
开发者Allegro的开发者
稳定版本
5.2.6
(2020年2月10日,​4年前​(2020-02-10
操作系统跨平台
类型多媒体电子游戏相关SDK
许可协议Allegro 4: Giftware(类似MIT许可证
Allegro 5: Zlib
网站liballeg.org

Allegro是一个特别针对于电子游戏的开发的自由软件程序库[1][2][3]

该库提供基本二维图形、图像操作、音效输出、MIDI音乐、输入、计时器,以及额外的寻路矩阵计算、UNICODE、文件系统管理、有限而建基于软件的三维图形。

其版本4.0可以运行在DOSMicrosoft WindowsBeOSMac OS X、多种类Unix,程序只需要嵌入其API即可使用。该库还有独立的AmigaOS 4移植版。

该库使用C语言编写,适用于C或C++,其附带很多文档和实例。

附件

Allegro社区用户贡献了多种扩展,包括轴卷图块形式的地图、输入输出各种格式(有PNGGIFJPEGMPEGOggMP3ITS3MXMTTF)。其还有多个语言绑定,比如 PythonPerlSchemeC#D语言等。

历史

Allegro原本的含义是"Atari Low-Level Game Routines"[4]。20世纪90年代初由Shawn HargreavesAtari 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实现。结合GlideMesaFX (3dfx),AllegroGL是少数对应DOS的开源3D硬件加速方案。[5]

功能

  • 向量绘制:
    • 像素、线、矩形、圆柱、贝塞尔曲线等几何图形、
    • 有图案(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格式的动画函数[6]

Allegro 5

目前的开发着手在Allegro 5这条分支,4.9.14是其不稳定的版本。Allegro 5对库的API及其大量的内部操作进行了完全重新的设计,致力于使API能更稳定地适用于多核间的协同工作。其默认使用OpenGL或DirectX硬件加速渲染后端,当前的大多数插件都需要重写接口。

其他

参考资料

  1. Harbour, Jonathan. Game Programming All in One, Second Edition. Course Technology PTR. 2004. ISBN 1592003834. 
  2. Steinke, Lennart. Spielprogrammierung. BHV Verlag. 2003. ISBN 3826680758. 
  3. P. J. Deitel, P. J. C How to Program. HowtoProgram. Prentice Hall. 2006. ISBN 0-13-240416-8. 
  4. Forum posting by Shawn Hargreaves. [2009-10-26]. 
  5. Daniel Borca. Mesa 3-D graphics library. [2009-10-26]. 
  6. Allegro Introduction. [2009-10-26]. 

外部链接

(英文)