Freeglut vs SDL vs GLFW

26

Ich muss mein Spielprojekt von Android (geschrieben in C, OpenGL ES 2.0, dank NDK) auf Windows- und Linux-Plattformen portieren. Natürlich muss ich etwas plattformabhängigen Code umschreiben, aber jetzt blieb ich bei der Frage, welche Bibliothek zum Erstellen von OpenGL und Eingabe-Handle verwendet wird.

Nur ein schnelles googeln bringt mir 3 Kandidaten:

1) Freeglut - umgeschrieben und frei gute alte GLUT.
2) SDL - die meisten kennen eine Bibliothek, die in vielen Spielen verwendet wird.
3) GLFW - eine Art neuer, aber einfacher und funktionaler.

Ich bin gerade erst in der PC-Entwicklung und sehe keine signifikanten Unterschiede zwischen ihnen. Kannst du mir bei der Auswahl helfen? Ich brauche nur die Eingabe der Maus / Tastatur und das Erstellen des OpenGL-Kontexts. Außerdem verwende ich GLEW, um mit Leichtigkeit zu modernem OpenGL zu gelangen.


quelle
2
Die Antwort wird sehr positiv bewertet und ist keine gute Frage für das SE-Format. Trotzdem ist meine mit großer Überzeugung aufgenommene Antwort - nachdem ich alle drei für echte Projekte und einige andere wie SFML, GLUT, Qt und das manuelle Rollen einer Lösung verwendet habe -, dass SDL eine gute Mischung aus Funktionen, Stabilität und Benutzerfreundlichkeit bietet von Nutzen. Ich empfehle besonders die Vorabversionen 2.0 (nur verfügbar, wenn Sie sich das Mercurial-Repo ansehen und selbst bauen, aber das ist ganz einfach). Zweitens ist SFML ziemlich gut. Ich habe in GLFW zu viele Fehler gefunden, GLUT ist schlecht für Spiele und Hand-Rolling ist eine Menge Arbeit.
Sean Middleditch
Ich persönlich würde SDL empfehlen, da es alle Teile eines Spiels von der Eingabe über die Grafik bis hin zur Audio- und Eingabefunktion abwickelt. Es kann jedoch einschränkend sein, aber da Sie von einem bereits entwickelten Spiel für eine eingeschränktere Plattform kommen, halte ich es für eine gute Wahl.
CobaltHex
Ja, es ist eine Umfrage. Meine Stimme ist GLFW, einfach, leicht, hatte nie Probleme, die nicht gelöst wurden. Es ist superleicht und einfach zu kompilieren.
verzögert

Antworten:

29

GLFW ist modern und hat einen sehr genau definierten Anwendungsbereich . Es ist auch unter sehr aktiver Entwicklung.

SDL auf der anderen Seite ist solide und verfügt über viele Funktionen in verschiedenen Bereichen, es fehlt jedoch an allen Funktionen (zum Beispiel: SDL kann Audio abspielen, aber Sie bevorzugen möglicherweise OpenAL, da es in dieser Hinsicht weitaus besser ist). Es ist möglicherweise bemerkenswert, dass SDL auf viele verschiedene Plattformen portiert wurde, im Gegensatz zu GLFW, das nur für Desktop-Plattformen (win / linux / mac) gilt.

GLUT , na ja, sollten vermieden werden . Es gibt einfach nichts, was es gut macht.


Meiner Meinung nach ist GLFW als Perfektionist die bessere Wahl. Weil es genau das tut, was man will, nicht weniger und nicht mehr. Die sehr aktive Entwicklung ist auch ein gutes Zeichen für langfristige Projekte, da es normalerweise bedeutet, dass Fehler behoben werden, dass neue Funktionen hinzugefügt werden, dass es mit neueren Standards Schritt hält und dass es in der Nähe nicht abgebrochen wird. Dies ist für einen schnellen Port oder ein 6-monatiges Spiel nicht wichtig, aber für eine Engine oder eine Bibliothek, die Sie wiederverwenden möchten, würde ich dies berücksichtigen.

API-Biest
quelle
7
Aber das OP fragt nach Freeglut nicht nach GLUT !!!
@ user3473 "FreeGLUT ist eine Open-Source-Alternative zur OpenGL Utility Toolkit-Bibliothek (GLUT)."
YoYoYonnY
@YoYoYonnY Also sind GLFW und SDL, daher diese Frage.
Dan
@ Dan ... nein. GLFW und insbesondere SDL sind definitiv keine Alternativen für GLUT, da Sie mit ihnen Dinge tun können, die Sie mit GLUT nicht tun können und umgekehrt.
YoYoYonnY
@YoYoYonnY Mit FreeGLUT können Sie Dinge tun, die Sie mit GLUT nicht tun können. Mein Standpunkt steht noch.
Dan