Allright so I've been doing some searches, here what I got:

  • SDL: It is a standard, very mature but very old. (I got posts of late 2009 where they were still waiting for the 1.3 to come up...we are still waiting 3 years later). Also it seems abandoned and old style (it's around from the '98). And also it's made in C (for this there's no downside nor upside. Someone prefers C over C++ nowadays for some reason and C can run on C++ but not viceversa).

  • SFML: It's a new born in the libraries. It's not very mature and lack of a lot of documentation. It was buggy till 1.6 but now the 2.0 is quitely good (it's the one I've tried). It has a lot of things built in (even the possibility to easily use OpenGL). It's in C++ and has the OOP paradigm.

  • Allegro: I haven't heard much about it. It gives me the idea of a toy, but it's not an opinion I count on. It is C based (like SFML) but doesn't have that large community (like SFML).

I'm considering only cross platform libraries. Now I'd like to make few questions about this situation:

  1. Is SDL falling apart?
  2. Why isn't SDL being update to the so awaited 1.3 (which will, they say, support iPhone and phones) in 3 years?
  3. Is SFML gonna take SDL place?
  4. Why people say that SFML is more abstract then SDL? It seems pretty much the same to me. You have likely all the configurations you want on both.
  5. Allegro had a troubled story. It was only for DOS, then it was ported for other platforms etc... Is it really cross platform?
  6. How stable is Allegro?


  • \$\begingroup\$ Another version of SDL is on the way and is currently in development, incorporating everything they learned from their work on 1.2. I don't know much more about it than that. \$\endgroup\$ Commented Aug 1, 2012 at 18:50
  • \$\begingroup\$ Indeed. I'm using SDL 1.3 now after having used most of the ones listed (and a few that aren't, and having built my own). It's irritating that SDL hasnt had a stable release in some time, but the dev snapshots work quite well. \$\endgroup\$ Commented Aug 1, 2012 at 20:00
  • \$\begingroup\$ Allegro never died. Version 3 was DOS. It has been cross platform for well over 10 years now. Version 5 was a complete rewrite targeting modern hardware (D3D, OpenGL) and mobile devices. \$\endgroup\$
    – Matthew
    Commented Aug 2, 2012 at 17:39
  • \$\begingroup\$ @Matthew it.wikipedia.org/wiki/Allegro_(libreria_software) "Allegro [...] ma il progetto fu abbandonato quando l'autore si accorse che la piattaforma era destinata verso una morte certa." Translation: Allegro [...] but the project was abandoned because the author realized that the platform was going towards a sure death. \$\endgroup\$
    – Shoe
    Commented Aug 2, 2012 at 17:47
  • \$\begingroup\$ @Jeffrey, that statement is in reference of the Atari ST platform being dead, such that the original pre-1995 unreleased version (of Allegro) was scrapped and replaced with a DOS version. \$\endgroup\$
    – Matthew
    Commented Aug 2, 2012 at 18:35

3 Answers 3


If I had to choose from that list, I'd definitely gun from SFML as it has a simple API and allows you to implement much of it yourself, a great learning experience. I'd like to just chime in and say SFML is simpler and sticks to what it needs to do. A base framework for rendering things.

I think you should also consider the new contender MonoGame (http://monogame.codeplex.com/) OpenGL and written on .NET, it runs on Mono pretty much everywhere =) It has a beautiful API based off of XNA and does a lot of the work for you such as game loops and the really redundant stuff we all end up writing ourselves, anyway.


I currently use Allegro 4.x, it has some flaws that I had to manually work around, but since then they've released 5.x that overhauled the entire API and fixed all the problems I was having to fix.

Allegro 4.x is very stable (as in, no longer being developed) because the entire community suggests that if you are just starting with it that you start with 5.x which fixes all the problems with 4.x and is still cross-platform.


Allegro 5 is quite adept - I like it personally. The initialization code is simple to use, and easy to stuff away in a class or an Init() function. Really, if you write a wrapper function or class, you won't even have to directly call anything from any of these libraries.

Are you interested in game graphics or game development? Because if you want to make games, you should just pick one of these libraries and run with it. I'd only sweat these small steps if you're particularly interested in learning the nitty gritty of graphics development.


Not the answer you're looking for? Browse other questions tagged .