Ich beginne OpenGL mit FreeGLUT zu lernen, indem ich das Superbible und das Wissen, das ich aus meinen elementaren Grafiken habe, benutze, um meine Fähigkeiten aufzufrischen.
Um mehr aus dieser Erfahrung herauszuholen, möchte ich eine GUI integrieren, um die von FreeGLUT verwendete zu überschreiben. Nun lautet meine Frage: Ist dies möglich und welche Bibliothek soll ich verwenden?
Einige Eigenschaften für die Bibliothek:
- Open Source
- Multiplattform (Linux und Windows)
- C / C ++
Wenn Sie weitere Empfehlungen haben, können Sie diese gerne zusammen mit Ihren Antworten auf mein Problem posten.
opengl
c++
gui
cross-platform
Cristina
quelle
quelle
Antworten:
Ich habe es selbst noch nicht ausprobiert, aber das sieht sehr interessant aus:
Bibliothek
BEARBEITEN: Da Sie einen Kontext zum Rendern benötigen, würde ich entweder SFML oder SDL 1.3 empfehlen.
quelle
Die GUI (CEGUI) von Crazy Eddie ist beliebt, und Sie können entweder eines der vorhandenen Renderer-Backends zuschneiden oder Ihr eigenes Targeting schreiben, egal welche OpenGL-gestützte API Sie möchten. Es ist Open Source, plattformübergreifend und C ++. Es wird jedoch auf Konsistenz Wert gelegt, was nicht immer ein gutes UI-Prinzip für Spiele ist, bei denen möglicherweise Dutzende benutzerdefinierter Steuerelemente an genau einer Stelle verwendet werden.
Ein aktuelles beliebtes Muster ist die Sofortmodus-GUI (IMGUI) , eine Art "keine GUI-Bibliothek". Es hat Vor- und Nachteile - es ist sehr einfach, kann aber schwierig zu optimieren sein, und ich habe noch keine wirklich guten IMGUI-Modelle für erweiterte Steuerelemente wie Kombinationsfelder oder Baumansichten gesehen. Ich sehe auch keine gute Implementierung eines IMGUI-Fenstersystems (und ich verbringe einige Zeit damit, eines zu schreiben, mit dem ich nie zufrieden war) - es eignet sich jedoch hervorragend für einfache HUD-Elemente und für einfache einmalige Steuerungen.
quelle
Ich bin kürzlich über Gwen gestolpert . Es ist eine GUI-Bibliothek, die vom Autor von Gary's Mod geschrieben wurde. Es ist MIT-lizenziert, wie jede gute Spielbibliothek sein sollte.
Die Bibliothek hat mehrere Dinge zu bieten.
Gwen ist seit einigen Jahren in der Entwicklung und es zeigt.
Dies ist eine große Sache. Die Bibliothek wird mit einem neu erstellten OpenGL-Renderer geliefert. Das Erstellen eines Renderers ist jedoch so einfach, dass Sie wahrscheinlich einen Renderer speziell für das Rendersystem Ihres Spiels erstellen möchten.
Gwen scheint auf der helleren Seite von Spiel-GUIs zu sein. Kein XML, kein HTML-Renderer, nur einfaches C ++. Gwen wird auch nicht mit Image Loadern ausgeliefert. Es wird erwartet, dass das Renderer-Backend das Laden übernimmt. Ich mag diese Funktion, da sie die Bibliothek klein hält und das Render-System meines Spiels bereits Texturen verwaltet.
Nicht das Erste in deinen Meilensteinen, aber irgendwann musst du deine Benutzeroberfläche an dein Spiel anpassen.
Ich bin kein Webentwickler und finde die HTML CSS-zentrierten GUIs schwierig.
Dies ist groß für Spiele. Es ist immer ein Problem, GUI-Systeme zu verwenden, die die Eingabe-Abfrage besitzen möchten.
Die Bibliothek bemüht sich, plattformübergreifend zu sein, gibt jedoch zu, dass auf weniger genutzten Plattformen Probleme auftreten können.
Außerdem ist es viel kleiner als CEGUI oder MyGUI, daher ist es praktischer, es zu hacken oder Patches einzusenden.
Hier sind jedoch die Nachteile dafür:
quelle
Entschuldigen Sie die verspätete Antwort, aber vielleicht möchten Sie sich ein OpenGL-UI-Framework namens GG ansehen . GG wurde als Teil des FreeOrion- Projekts entwickelt und ist im SVN-Repository (und im herunterladbaren SDK) enthalten. Es scheint ziemlich fähig zu sein. Ich habe unten einen Screenshot eingefügt. Sie können auf das Bild klicken, um die Vollversion anzuzeigen.
quelle
MyGUI ist eine ziemlich gute Lösung für DirectX und OpenGL.
quelle
Schauen Sie sich AntTweakBar an , es wird von Cinder verwendet . Es ist auch eine neue GUI-Bibliothek für Cinder in Arbeit: SimpleGUI .
Wenn Sie auf HTML + CSS umsteigen möchten, gibt es Awesomium (das von Wolfire Games in ihrem Overgrowth-Spiel verwendet wird ) und eine kostenlose Alternative namens Berkelium .
quelle
Ich habe sowohl mit QuickGUI als auch mit MyGUI gespielt . Sie sind beide Ogre-GUI-Bibliotheken, die in letzter Zeit die Ogre-Anforderungen nicht mehr erfüllen. Ich habe noch nicht allzu viel Erfahrung damit, aber es sieht so aus, als würde ich bei QuickGUI bleiben, da es viel kleiner und einfacher ist.
Ich bin mir nicht sicher, ob das QuickGUI-Wiki noch aktualisiert wurde, um auf die neueste Ogre-freie Version zu verweisen. Hier ist die neueste Version.
http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip
Dort hat repo ein paar plattformübergreifende Aktualisierungen erhalten, sodass Sie den svn besser direkt verwenden können.
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform
Benutzername: Anonymes
Passwort: QuickGUI
Abschließend finden Sie hier das kurze Wiki zum Hinzufügen verschiedener Rendering-Backends. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial
MyGUI scheint mehr Funktionen zu haben, was zu einer Aufblähung führen kann. Und ehrlich gesagt, wenn Einfachheit keine Voraussetzung ist, bläst CEGUI MyGUI aus dem Wasser.
quelle
Ich würde QT empfehlen, da es sich um plattformübergreifendes C ++ handelt und Sie eine Open Source-Version davon mit der LGPL-Lizenz erhalten können. Es ist auch einfach zu bedienen und verfügt über viele vorgefertigte Komponenten, die Sie verwenden können.
quelle
Die Entwickler haben mich vielleicht erschossen , weil ich das gesagt habe, aber ich fand, dass GLFW einfach großartig darin ist, plattformübergreifende GUI-Frameworks zu erstellen. Die GLFW-Entwickler machen weiter und weiter, dass GLFW nicht mit GUI umgeht . Es erledigt jedoch eine nette, einfache, saubere und vollständig tragbare Aufgabe, Grafiken, Ereignisse und Maus- / Tastatur- / Joystick-Aufgaben zu verarbeiten.
Das Schöne an GLFW ist für mich, dass es ziemlich klein ist, keinen systemspezifischen Code, kein GLUT erfordert und gut gepflegt ist. War bisher für die Verwendung in OpenGL 4.1-Projekten stabil. Im Vergleich zu etwas wie SDL mag ich den winzigen Overhead und es war kinderleicht, GUI-Handler-Klassen zu schreiben.
Alternativ können Sie sich FLTK ansehen . Es kann für alle möglichen Zwecke verwendet und sehr einfach umgestaltet werden. Es wird wirklich zum Erstellen von Anwendungen verwendet, ist jedoch perfekt in der Lage, 3D-Objekte zu verarbeiten und basiert auf OpenGL. Sehr klein, gut unterstützt und obwohl ich nicht viele Leute sehe, die benutzerdefinierte Interfaces auf der Game-Design-Ebene erstellen, gibt es einige, die großartig zu funktionieren scheinen.
quelle