Ich war derzeit an einem Spielprojekt beteiligt und wir erreichen den Punkt, an dem wir die GUI für Menüs und andere Dinge hinzufügen möchten, aber die Zeit, die wir möglicherweise für die Entwicklung unseres eigenen Systems aufgewendet haben, könnte uns ein wenig Zeit kosten, und dies ist ein Teil davon des Systems, dass wir nicht zu viel Zeit verlieren wollen.
Wir lesen also über einige UI-Bibliotheken wie GUIchan, CEGUI und kürzlich LibRocket, die anscheinend sehr flexibel und nützlich sind. Meine Frage ist also, ob Librocket in ein in SDL / OpenGL in C ++ entwickeltes Projekt integriert werden kann. und wenn Sie wissen, wo Sie Informationen dazu finden, weil wir so etwas nicht finden können.
Ich denke, Sie müssen einige Änderungen am libRocket-Code vornehmen, damit er die Fenstererstellung besteht. Ich bin mir nicht sicher, ob es einen anderen Weg gibt, aber ich bin mir sicher, dass dieser Code funktionieren wird! und ich gehe davon aus, dass Sie für ein Windows-System entwickeln. Wenn Sie auf eine andere Plattform abzielen, gibt es ähnliche Schritte, jedoch mit unterschiedlichen Variablen und Funktionsänderungen!
Zunächst müssen Sie einen Handler für das von SDL erstellte Fenster erhalten. Dieser Code extrahiert den erforderlichen HWND-Wert (gemäß hier :
Jetzt müssen wir sicherstellen, dass libRocket dasselbe Fenster für das Rendern verwendet. Nach einer kleinen Suche in den Dateien habe ich eine Datei gefunden
hg/shell/src/win32/ShellWin32.cpp
(Adresse basiert auf Google Code), die Funktionen zum Erstellen von Fenstern enthält. Dort sehen Sie eine Funktion namensbool Shell::OpenWindow(const char* name, bool attach_opengl)
. Das ist die Hauptfunktion, die für die Erstellung eines Fensters verantwortlich ist. Damit libRocket unserehwndSDL
Variable wiederverwendet, müssen Sie alle Zeilen in dieser Funktion entfernen / kommentieren, mit Ausnahme der folgenden:und kurz vor diesen Zeilen fügen Sie diesen Code hinzu:
Ich weiß, dass es wahrscheinlich nicht der beste Weg ist, Arbeit zu leisten, aber ich bin sicher, dass es funktionieren wird. Wenn Sie auf etwas anderes als Windows abzielen, müssen Sie nur Entsprechungen für den HWND-Wert und die Funktion zum Erstellen von Fenstern finden. Sie befinden sich sicher irgendwo in Codes, da fast alle Fenstersysteme, entweder Fenster oder Nicht-Fenster, dieselbe Logik verwenden.
quelle