|Parts of this article (those related to Allegro 4, which is being deprecated in favor of Allegro 5) need to be updated. (March 2014)|
|Original author(s)||Shawn Hargreaves|
|Initial release||early 1990|
220.127.116.11 / August 31, 2016
|Operating system||Windows, Linux, macOS, et al.|
|Type||Multimedia and Games SDK|
|License||Allegro 4: Beerware
Allegro 5: zlib
Allegro is a software library for video game development. The functionality of the library includes support for basic 2D graphics, image manipulation, text output, audio output, MIDI music, input and timers, as well as additional routines for fixed-point and floating-point matrix arithmetic, Unicode strings, file system access, file manipulation, data files, and 3D graphics. The library is written in the C programming language and designed to be used with C, C++, or Objective-C, with bindings available for Python, Lua, Scheme, D, Go, and other languages. Allegro comes with extensive documentation and many examples.
Allegro supports Windows, macOS, Unix-like systems, Android, and iOS, abstracting their application programming interfaces (APIs) into one portable interface. Previous versions up to 4.4 supported Windows, macOS, DOS, BeOS, and various Unix-like systems with (or without) the X Window System. There is also an independent port of Allegro on AmigaOS 4 and MorphOS.
Initially standing for Atari Low-Level Game Routines, Allegro was originally created by Shawn Hargreaves for the Atari ST in the early 1990s. However, Shawn abandoned the Atari version as he realized the platform was dying, and reimplemented his work for the Borland C++ and DJGPP compilers in 1995. Support for Borland C++ was dropped in version 2.0, and DJGPP was the only supported compiler. As DJGPP was a DOS compiler, all games which used Allegro therefore used DOS. Around 1998, Allegro branched out into several versions. A port to Windows, WinAllegro, was created, and also during this time, a Unix port of Allegro, XwinAllegro, was created. These various ports were brought together during the Allegro 3.9 WIP versions, with Allegro 4.0 being the first stable version of Allegro to support multiple platforms.
Current development is focused on the Allegro 5 branch, a complete redesign of both the API and much of the library's internal operation. Effort was made to make the API more consistent and multi-thread safe. By default, the library is now hardware accelerated using OpenGL or DirectX rendering backends where appropriate. Many of the addons that existed as separate projects for Allegro 4 now interface seamlessly with Allegro proper and are bundled with the default installation. Allegro 5 is event driven.
Allegro provides the following graphic functions:
- Vector drawing:
- pixels, lines, rectangles, triangles, circles, ellipses, arcs, Bézier curves
- shape fill, with or without pattern
- polygons: flat, Gouraud, textured (3D) and translucent
- masked, compressed and compiled sprites
- blitting, rotation, stretching, reduction, alpha blending, Gouraud shading
- native support for BMP, LBM, PCX and TGA files (others supported with library extensions)
- Color palettes:
- color palette manipulation (reading, writing, conversion)
- conversion of color formats RGB <-> HSV
- support for different encodings and conversion, default is UTF-8
- bitmap fonts (masking, colouring, alignment)
- draw directly on the screen or on any-size memory bitmaps
- hardware scrolling and triple buffering (where available), mode-X split screen
- animation functions for FLI/FLC format
The community of Allegro users have contributed several library extensions to handle things like scrolling tile maps and import and export of various file formats (e.g. PNG, GIF, JPEG images, MPEG video, Ogg, MP3, IT, S3M, XM music, TTF fonts, and more).
Allegro 4.x and below can be used in conjunction with OpenGL by using the library AllegroGL which extends Allegro's functionality into OpenGL and therefore the hardware. Allegro 5 natively supports OpenGL.
- Allegro Development Team. "The giftware license". Retrieved 2013-11-16.
- Harbour, Jonathan (2004). Game Programming All in One, Second Edition. Course Technology PTR. ISBN 1-59200-383-4.
- Steinke, Lennart (2003). Spielprogrammierung. BHV Verlag. ISBN 3-8266-8075-8.
- Deitel, P. J. (2006). C How to Program. How to Program. Prentice Hall. ISBN 0-13-240416-8.
- List of Allegro language bindings
- Forum posting by Shawn Hargreaves
- Allegro Introduction