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?



closed as primarily opinion-based by MichaelHouse Jul 4 '13 at 17:09

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • \$\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\$ – Raceimaztion Aug 1 '12 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\$ – Sean Middleditch Aug 1 '12 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 Aug 2 '12 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 Aug 2 '12 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 Aug 2 '12 at 18:35

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.


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.


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.


Not the answer you're looking for? Browse other questions tagged or ask your own question.