2009-08-10 5 views
6

Der Versuch, auf einer Bibliothek zu entscheiden, für ein Fenster zu schaffen und eine Benutzereingabe für meine OpenGL App erfassen, aber es gibt einfach viel zu viele Möglichkeiten:OpenGL Windowing-Bibliothek für das Jahr 2009

GLUT ist einfach veraltet. Ich mag GLFW, aber es scheint, dass Sie die Fensterposition nicht einstellen können, bevor Sie sie anzeigen (ich wollte es zentriert haben, ist das so viel zu fragen?), So dass Sie es sehen und dann umschalten, was mich stört. Die Plus-Entwicklung scheint auch damit aufgehört zu haben. SFML hat einige nette Funktionen, aber es verwendet Ereignisabfragen statt Callbacks, die ich zum Entkoppeln bevorzuge. Ich glaube nicht, dass ich alle GUI-Funktionen von FLTK benötige. SDL ist langsam (scheint die GPU nicht zu nutzen). Und die anderen 3, über die ich nicht viel weiß (FreeGLUT, OpenGLUT, OGLWFW). Welches ist also das kleinere Übel? Gibt es andere, von denen ich noch nichts gehört habe?

Ich versuche nur ein einfaches 2D-Spiel zu machen. Ich bin mit OpenGL genug vertraut, dass ich keine Zeichenroutinen brauche, aber ich würde mich wahrscheinlich nicht über andere Funktionen beschweren, die nützlich sein könnten, wenn sie richtig implementiert werden.

+0

OGLWFW scheint im Moment nur Win32 zu sein. Die Website sagt, dass Linux/Mac-Unterstützung "geplant" ist. Sie haben nicht gesagt, ob Lizenzierung oder plattformübergreifende Unterstützung ein Problem ist - wenn ja, sollten Sie sich das merken. – greyfade

+0

Oh. Ich muss es beschönigt haben. Cross-Plattform ist nett ... vor allem, da ich jetzt auf Ubuntu entwickle. Lizenzierung ist nur eine kleine Sorge, da ich sowieso nie etwas zu Ende zu bringen scheint ... Ich komme nie an den Punkt, an dem ich es verkaufen kann. – mpen

Antwort

6

Ich würde für Qt gehen. Nizza allgemeine Bibliothek + Opengl Unterstützung

+0

Richtig ... vergaß Qt. Steile Lernkurve, nein? Versuchte es schon einmal zu benutzen, verblüffte mich völlig. – mpen

+0

Hrm ... zumindest der Editor, mit dem es kam, war (verwirrend).NetBeans 6.8 scheint ein gewisses Maß an Unterstützung für Qt zu haben, also war es nicht so schlimm, eine einfache App zum Laufen zu bringen. – mpen

+0

Ich verwende Qt mit Visual Studio unter Windows und Vim/make on * nix-Boxen. Es hat wirklich gute Dokumentation und saubere API. Ich denke, es gibt Tutorials, um es mit IDEs wie Eclipse/NetBeans/etc zu verwenden. Einfach googlen für sie –

8

SDL können Sie einen OpenGL-Kontext erstellen, der beschleunigt wird (abhängig von Treibern/Hardware-Unterstützung).

Ich weiß, hat Sie als C++, aber pygame (Python) für die Erstellung von 2D-Spiele eine große Bibliothek, die auch einen OpenGL-Kontext unterstützt. Pygame basiert auf SDL.

Clutter ist eine neue OpenGL-basierte GUI-Bibliothek mit Bindings für Perl, Python, C#, C++, Vala und Ruby. Ich habe es selbst nicht benutzt. Von der Website:

Clutter verwendet OpenGL (und optional OpenGL ES für den Einsatz auf mobile und Embedded-Plattformen) für die Darstellung aber mit einer API, die die zugrunde liegenden GL Komplexität vom Entwickler versteckt. Die Clutter-API soll einfach, effizient und flexibel zu verwenden sein.

+0

SDL ist immer noch C-esque (erfordert Bereinigung) und verwendet Ereignisabfragen statt Callbacks, und scheint nicht sehr gute Integration mit OpenGL (erfordert die Verwendung von SDL-Wrapper-Funktionen?). – mpen

+0

Nachdem Sie den OpenGL-Kontext in Pygame oder SDL eingerichtet haben, können Sie ein beliebiges OpenGL verwenden. Ich habe eine OpenGL-App, die im Grunde SDL für Windowing und Event-Polling und OpenGL für die Grafik verwendet. –

+0

Nun, ja ... ich sage nicht, dass es nicht funktioniert, es wird nur viel überzeugender sein, die anderen Bibliotheken zu schlagen. – mpen

7

GLUT und die anderen GLUT Alternativen sollten nicht in irgendeiner Art von Produktionsanwendung verwendet werden. Sie eignen sich gut, um eine schnelle Demo-Anwendung zusammenzustellen oder etwas auszuprobieren, aber nicht viel mehr.

Wenn Sie versuchen, ein OpenGL-Spiel zu machen, würde ich SDL empfehlen. Es konzentriert sich mehr auf Gaming-Bedürfnisse. Es kann definitiv mit OpenGL verwendet werden. Eine kurze Google-Suche nach "SDL OpenGL" ergab this link darüber, wie man OpenGL mit SDL initialisiert. Die Aktivierung von OpenGL sollte auch Hardware-Rendering mit der GPU ermöglichen.

Qt ist eine sinnvolle Alternative, aber es ist besser, wenn Sie OpenGL in eine größere Desktop-Anwendung (denken Sie 3D-Modellierung, CAD/CAM, medizinische Visualisierung usw.) einbetten möchten, wo Sie auf Standard-OS-Widgets für die Benutzeroberfläche zugreifen müssen .

+0

Ja ... aber Qt scheint auch so viel moderner und gut gestaltet! Mein Spiel wird einen Editor haben ... Ich * kann * diese zusätzlichen Widgets nutzen: p Ich werde SDL für zukünftige Projekte in Erwägung ziehen. – mpen

1

Je nach dem jüngsten Zusammenhang mit dem Autor wurde die Entwicklung auf OGLWFW gestoppt.

+0

Gut zu wissen. Sie alle scheinen zu sterben ... denke, du musst dich heute für einen großen professionell entwickelten Rahmen entscheiden. – mpen

3
IF "learning c++ part of what you're trying to achieve": 
then 
IF "you only want to learn OpenGL with a fullscreen mode": 
    USE GLUT //Because it's VERY VERY simple. You can get set up VERY quick 
ELSE: 
    USE QT //Great library, has many many things that will help you. It is portable, it has a nice API 
ENDIF 

IF "you don't need C++": 
then 
    USE Python //I recommend it, it is fast, no long link times, good api, omg I love this language 

Hintergrund:

Ich versuchte auch einmal einfache 2D-Spiele zu machen, begann ich mit C++ und NeHe. Ich wusste nichts über OpenGL und C++ (hatte Java-Hintergrund). Die Sprache hat mich überrannt, ebenso OpenGL. Es war also eine sehr harte Lernkurve.

Ich empfehle nicht, so zu gehen, da Sie schnellere Ergebnisse mit einer dynamischen Sprache (wie Python) erhalten können. So begann ich einige Jahre später mit Python zu lernen. Ich könnte die "rotierende Würfel" viel schneller arbeiten.

+1

Nun, ich persönlich kenne bereits C++ und OpenGL, also ist das nicht wirklich ein Problem. Ich brauchte nur eine Cross-Plattform Fenster API. Alle anderen Leckerbissen waren eine nette Geste für Qt;) – mpen

3

Wir haben mit ClanLib 0.8 in 2008 und ClanLib 2.1 in 2009 auf unserem C++ Kurs ziemlich gute Erfahrungen gemacht. Die Produktivität der Studenten (gemessen an der Qualität ihrer Projektarbeiten) hat seit dem Wechsel von SDL stark zugenommen. Es muss jedoch angemerkt werden, dass 2.1 immer noch sehr unvollständig ist und man sicherlich auf Funktionen stoßen wird, die einfach noch nicht implementiert sind.

Ein paar Gruppen verwendet Irrlicht (3D-Engine) mit guten Ergebnissen.

SFML sieht vielversprechend aus, aber ich hatte noch keine Gelegenheit es zu versuchen.

Wie andere gesagt haben, ist GLUT nicht wirklich für etwas ernstes geeignet. Der Rest der genannten Bibliotheken sind mehr GUI-Toolkits als Spieleentwicklungsbibliotheken.