Im Zuge eines neuen Projekts habe ich mich über die Darstellung von 2D Grafik in C++ informiert. Die Lizenz sollte das entwickeln von Opensource und kommerziellen Projekten ermöglichen. Folgende Möglichkeiten standen schlussendlich zur Auswahl:

Natives OpenGL oder DirectX

Der direkte Zugriff auf die bekannten Grafik-APIs bietet zwar viele Möglichkeiten, allerdings ist die Arbeit damit auch deutlich anspruchsvoller.

SDL

SDL ist ein häufig genannter Name, wenn es um 2D Anwendungen und generelle Multimediaprogrammierung unter C++ geht. Es wird auf http://www.libsdl.org angeboten und bietet prinzipiell alles was notwendig ist. Die Dokumentation und die Community ist sehr groß und gut eingearbeitet.  Allerdings ist die komplette API nicht objektorientiert.

Allegro

Etwas umfangreicher als die SDL ist Allegro. Der Funktionsumfang insgesamt ähnelt sich zwar, aber gibt es noch weitere nützliche Funktionalitäten. Die API ist ebenfalls nicht objektorientiert. Sie wird auf http://www.allegro.cc angeboten.

SFML

SFML ist die objektorientierte Alternative zur SDL. Sie besitzt einen ähnlichen Funktionsumfang und wird aktiv weiterentwickelt. Dokumentation und Community sind allerdings noch nicht so gewachsen. Man kann sie auf http://www.sfml-dev.org finden.

Ogre3D

Quasi das genau Gegenteil zu OpenGL und DirectX ist Ogre3D, eine vollständige 3D Grafikengine. Sie wird unter http://www.ogre3d.org angeboten.

Ich habe mich schließlich für SFML entschieden, da es eine moderne Engine bietet und die Entwicklung aktiv voranschreitet. Neben dem 2D Rendering ermöglicht sie auch diverse weitere Funktionalitäten wie Audioausgabe und Netzwerkprogrammierung. Die Einbindung in Qt ist sehr einfach zu bewerkstelligen. Sie wird unter der zlib-Lizenz vertrieben.

Advertisements