2009-08-19 13 views
1

Ich habe eine OpenGL-Engine für eine Weile geschrieben, die SDL für die gesamte Fensterverwaltung und Portabilität verwendet. Ich würde gerne einen Level-Editor erstellen, der die volle Engine nutzt. Die Engine selbst ist mit SDL außer für den Eingang überhaupt nicht verbunden. Ich würde gerne wxWidgets für die GUI verwenden und ich habe mir einige OpenGL-Beispiele angesehen, die ziemlich einfach und leicht zu verstehen sind.Game Engine Karteneditor. SDL-> wxWidgets

Wäre es einfacher zu versuchen, SDL mit wxWidgets zu integrieren und beide zu verwenden oder zwischen ihnen für verschiedene Anwendungen zu wechseln? Was wäre der beste Weg, um zwischen den beiden Systemen zu wechseln?

Antwort

3

Wahrscheinlich wäre es einfacher, eine GUI-API pro Anwendung zu verwenden, anstatt beide zusammen zu verschmelzen (d. H. Leichter SDL/OpenGL in Ihrem Spiel und wxWidgets/OpenGL in Ihrem Level-Editor). Normalerweise sind diese Bibliotheken nicht so aufgebaut, dass sie zusammengefügt oder in Verbindung mit anderen Bibliotheken verwendet werden können, so dass es nahezu unmöglich wäre, sie beide in einem Programm zu verwenden. Zum Beispiel weiß ich nicht viel über SDL, aber ein korrekt geschriebenes wxWidgets-Programm verwendet interne Makros, um int main() zu generieren und seine Nachrichtenpumpe unter anderem zu starten. Wenn SDL von Ihnen verlangt, dasselbe zu tun (führen Sie einen speziellen Initialisierungscode in Ihrem int main() aus oder erlauben Sie SDL, seinen eigenen int main() zu generieren), könnten Sie SDL nicht richtig initialisieren, ohne wxWidgets zu zerstören, und umgekehrt. Ich weiß auch nicht, ob dieser bestimmte Konflikt tatsächlich zwischen den beiden Bibliotheken existiert, aber es ist nur ein Beispiel dafür, wie die beiden miteinander interagieren und sich gegenseitig beeinflussen können.

Das heißt, in einer perfekten Welt wäre es besser, eine der Bibliotheken zu wählen und sie sowohl für Ihre Engine und Level-Editor (SDL/OpenGL für die Engine und Editor oder WxWidgets/OpenGL für die Engine verwenden und Editor), aber wenn Sie glücklich sind, zwei verschiedene API-Codebasen zu verwalten, dann sollten Sie es nicht beheben, wenn es nicht kaputt ist.

+0

SDL verwendet kein main() -Makro und kann in Teilen initialisiert werden, aber ich würde annehmen, dass sich die Meldungsschleifen überlappen würden. (SDL erfordert, dass Sie Ihre eigene Schleife implementieren.) – aib

+0

Ja, wenn nicht bei int main() dann an der Nachrichtenschleife wird es Probleme geben. wxWidgets erstellt eine eigene native Nachrichtenschleife, die vom Endbenutzer vollständig verborgen ist. Wenn man es nur geringfügig ändert, würde die Bibliothek leicht kaputt gehen. – GRB