Welche Alternativen zu GLUT gibt es?

12

Ich versuche OpenGL zu lernen und habe gerade herausgefunden, dass GLUT veraltet ist . Ich kenne SDL bereits und es scheint, dass es eine gute Alternative ist. Soll ich SDL verwenden, um Spiele mit OpenGL zu entwickeln, oder gibt es bessere Alternativen? Ich bin neu in der Spieleentwicklung, daher weiß ich nicht viel über den Stand der Technik.

Mansuro
quelle

Antworten:

27

Ich habe gerade herausgefunden, dass GLUT veraltet ist.

Das passiert, wenn Sie die erste Antwort akzeptieren, auf die Sie stoßen. Sie bekommen schlechte Informationen. GLUT 3.7 sollte nicht verwendet werden, FreeGLUT ist jedoch vollständig abwärtskompatibel.

Ihre Frage geht jedoch woanders hin. Für ein tatsächliches Spiel ist GLUT von * Form ungeeignet. Es gibt Ihnen keine Kontrolle über die Hauptschleife, und Sie brauchen das wirklich in einem Spiel (FreeGLUT hat eine Möglichkeit, die Hauptschleife zu kontrollieren, aber es ist immer noch seltsam). GLUT dient zum Schreiben von Grafikdemos. Dies ist sehr wichtig, wenn Sie neue grafische Effekte testen. Sie sollten sie daher bei Bedarf in Ihrer Toolbox haben. Ihr Hauptspielcode sollte ihn jedoch niemals verwenden.

GLFW ist eine spielbezogene, leichte Alternative zu GLUT. Es bietet grundlegende Unterstützung für Dinge, die über das Erstellen eines OpenGL-Fensters hinausgehen. Hier können Sie Eingaben abrufen, Bilder als Texturen laden und ein paar andere Dinge tun.

SDL , SFML und Allegro 5 sind Multimedia-Toolkits. Sie können OpenGL-Fenster erstellen, aber sie können noch viel mehr. Sie bieten volle Unterstützung für Eingabe, Audio und verschiedene andere Dinge, die Sie für ein Spiel benötigen. Wenn Sie ein Spiel machen, ist eines davon ein guter Ausgangspunkt. Ich persönlich mag Allegro 5, aber das ist nur meine Neigung zu guter Dokumentation und einer sauberen API.

Nicol Bolas
quelle
1
Was verwenden die AAA-Titel (nur für PCs und für mehrere Plattformen)? Verwenden sie diese (GLFW, Allegro), die Sie erwähnt haben, für den Umgang mit offenen Fenstern? oder schreiben sie ihr eigenes "alles" von Grund auf neu?
Quazi Irfan
@iamcreasy: "AAA-Titel" (ich hasse diesen Begriff wirklich) verwenden keine von diesen. Im Allgemeinen verwenden sie nichts Open-Source. Sie könnten, aber wenn sie eine Bibliothek benutzen wollen, würden sie lieber eine Bibliothek benutzen, die unterstützt wird. Es gibt einige Ausnahmen wie ODL oder Bullet. Aber das sind eher Ausnahmen als die Regel.
Nicol Bolas
Seit wann lädt GLFW Bilder als Texturen? Ist definitiv nicht in der Featureliste; noch irgendwelche Funktionen, die diesen Zweck in meinem glfw-Header aus der Ferne erfüllen.
verzögerte
1
Der andere große Nachteil von GLUT ist, dass sein Eingabemodell nicht besonders gut für Spiele geeignet ist. Es gibt keine Möglichkeit, rohe Schlüsselcodes oder Ereignisse zum Drücken / Freigeben der Modifizierertasten selbst abzurufen (z. B. mit Strg als Feuerknopf), und es gibt keine Möglichkeit, den zugrunde liegenden GL-Kontext abzurufen (der erforderlich ist, um vsync auf X11 zu aktivieren, beispielsweise).
flauschige
1
@NicolBolas ah, ich habe 2.7 vergessen, sie [Threads, Bilder] wurden für die GLFW 3.0-Version als "aus dem Kontext" deklariert.
verzögerte
2

Wenn Ihr Ziel ist, ein Spiel zu entwickeln,

Es hängt davon ab, ob Sie Ihr Spiel plattformübergreifend haben möchten oder nicht. Für tragbare Spiele (Windows, Mac, Linux) scheint SDL die einzige Wahl zu sein.

Wenn Sie nur auf Windows und / oder XBox abzielen, gibt es viel bessere Alternativen, z. B. XNA, mit dem Sie nicht viel Code manuell schreiben müssen.

Wenn Sie OpenGL lernen möchten,

Programmieren Sie einfach in OpenGL, aber stellen Sie sich vielen unintuitiven Konzepten, Mathematik und umfangreichen Handbüchern.

Mischa Arefiev
quelle
Wie Takumi sagte, gibt es auch SFML als portable Bibliothek. Besser als SDL imho (es ist aktueller.)
kaoD
8
-1: "Für tragbare Spiele (Windows, Mac, Linux) scheint SDL die einzige Wahl zu sein." Dies ist nicht einmal im entferntesten wahr. SFML und Allegro 5 existieren beide als perfekt gültige Alternativen und haben eine breitere Plattformbasis.
Nicol Bolas
1

GLUT ist eine API sowie eine Bibliothek. Die ursprüngliche Bibliothek ist in der Tat veraltet. Die API ist eine andere Sache, es war ein guter Anfang, es sind nur Überarbeitungen erforderlich, um Einschränkungen zu überwinden und neue Anforderungen zu erfüllen. Die primäre aktuelle Implementierung ist FreeGLUT, die unterstützt wird und nicht veraltet ist. Das heißt, eine gute Alternative zu GLUT (wie in der Bibliothek GLUT) ist GLUT (wie in FreeGLUT).

Das oben mit "Steuerung der Hauptschleife" festgestellte Problem ist falsch. Mit neueren GLUT-Versionen haben Sie eine bessere Kontrolle über Ihre Spielschleife (wenn dies für Sie wichtig ist). Die Einschränkung wurde durch glutMainLoopEvent () behoben. Diese und andere Einschränkungen werden hier angesprochen:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit

Ingemar Ragnemalm
quelle
" Mit neueren GLUT-Versionen haben Sie eine bessere Kontrolle über Ihre Spielrunde (wenn Ihnen das wichtig ist). " Es ist ein Spiel, also ja , das ist Ihnen wichtig. Es glutMainLoopEventist auch kaum ein guter Weg, um die Hauptschleife zu verwalten. Es wird weiterhin ein ereignisgesteuertes Modell zum Einspeisen von Daten verwendet, anstatt ein Abfragemodell, mit dem Sie die gewünschten Daten zum gewünschten Zeitpunkt abrufen können.
Nicol Bolas
Ich muss argumentieren, dass das ereignisgesteuerte Modell effizienter ist als das Abrufen, es sei denn, Sie rufen die von den Ereignissen gespeicherten Daten ab (was in Ordnung ist). Das Abfragen von Systemressourcen sollte sorgfältig durchgeführt werden.
Ingemar Ragnemalm
0

Qt unterstützt OpenGL. Schauen Sie sich Open Inventor an und überlegen Sie, ob es für Sie sinnvoll ist, direkt zu einer übergeordneten 3D-API zu wechseln.

FxIII
quelle