[gelöst] Suche Bibliothek für GUI + OpenGL, plattformunabhängig



  • Hi,
    ich will ein Programm schreiben, dass mit 3D Dateien arbeitet. Kein Editor dafür, aber was genau es macht ist für diese Frage hier auch irrelevant. Das Programm soll eine "normale" Fensteroberfläche haben, damit man normal damit arbeiten kann. Gleichzeitig sollte man auch seine Resultate am 3D Modell sehen. Deshalb sollte es im Fenster Felder enthalten, die mittels OpenGL die aktuelle Szene aus verschiedenen Blickwinkeln darstellen. Nun habe ich mal hier nachgesehen:

    http://de.wikipedia.org/wiki/Liste_von_GUI-Bibliotheken

    Und in Frage kamen (zumindest nach dem was ich gelesen habe) wxWidgets und FLTK.

    Das Einbinden von OpenGL in wxWidgets funktioniert über wsCanvas o.ä., ist ziemlich kompliziert und sehr fehleranfällig. Mehrere OpenGL-Darstellungen sollen laut einem Internetbeitrag, den ich gelesen habe das ganze noch sehr viel komplizierter und fehleranfälliger machen. (Ich habe nur ein Beispiel gefunden, in dem jemand zwei OpenGL-Darstellungen in einem Fenster geschafft hat.) Deshalb scheidet wxWidgets aus.

    FLTK scheint wie geschaffen für meinen Zweck:

    FLTK [...] ist ein [...] GUI-Toolkit für 3D-Grafikprogrammierung und enthält eine OpenGL-Anbindung.

    (http://de.wikipedia.org/wiki/FLTK)

    Aber erstens muss man sich die Bibliothek selbst komplilieren, was ich leider nciht kann. (Dann müsste ich hier im Forum ganz schlimm mit Fragen nerven 😉 ) und zweitens gibt es ein ganz rudimentäres Problem. Der Download von FLTK ist gesperrt, man kommt nicht dran:

    http://ftp.rz.tu-bs.de/pub/mirror/ftp.easysw.com/ftp/pub/fltk/1.1.10/fltk-1.1.10-source.zip

    Deshalb frage ich. Gibt es noch eine andere Möglichkeit in ein Programm mehrere OpenGL-Ansichten einzubinden? Von mir aus kann die GUI auch einfach nur aus einem Fensterrahmen bestehen und der Rest ist aus 2D-Grafiken selbst zusammengeschustert. Aber SDL und SFML z.B. lassen ja auch keine, ich nenne es mal "OpenGL-Frames", zu. Dort kann ich ein Fenster ja entweder komplett mit einem einzigen OpenGL füllen, oder gar nicht.
    Gibt es plattformübergreifende Bibliotheken für C++, die meine Anforderungen erfüllen?

    Ich danke schonmal, dass ihr euch den riesen Beitrag überhaupt durchlest. 🙂



  • Du könntest die Unterteilung in die verschiedenen Ansichten auch in OpenGL vornehmen. Das geht z.B. über Viewports (http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=42) oder Render to Texture. Wenn du allerdings so einen Trenner zwischen den Ansichten haben willst, mit dem die Größe der Ansichten verändert werden können, willst, musst du das ohne hilfe des GUI Systems machen.



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Es existieren auch Anbindungen für GTKmm / GTK+ (GtkGLExt / GtkGLExtmm).
    Aber wenn du mit dem Buildvorgang Probleme hast, weiß ich nicht, ob das was für dich ist.



  • Qt und QtGL fürs zeichnen... nimmste mehrere GLWidgets welche jeweils nen eigenen viewport haben.

    MfG



  • Erst mal danke für die Antworten. Lesson 42 von NEHE beschränkt sich leider auf ein Fenster mit reinen 3D-Ansichten ohne Steuerelemente dazwischen und es verwendet windows.h, ist also nicht ohne weiteres portabel. Zu den GLWidgets von Qt spuckt mir google irgendwie nichts brauchbares aus. Da kann ich mir jetzt nichts drunter vorstellen. Ist es denn möglich mit OpenGL quasie renderings zu machen und diese im Arbeitsspeicher zu behalten? Also quasie eine Bitmap, die die aktuelle Ansicht darstellt, aber die von vornherein um Zeit zu sparen nur im Arbeitsspeicher aufbewahrt wird. Dann könnte ich einfach mit SDL oder SFML einen Fensterrahmen erzeugen und sämtliche Objekte darin selbst zeichnen. Ich würde dann nur diese Bilder aus dem Arbeitsspeicher einbinden, die OpenGL immer wieder aktualisiert. Da müsste die Framrate für eine Anwendung ja noch hoch genug sein, wenn das so ginge.



  • Hab was dazu gefunden:

    http://wiki.delphigl.com/index.php/Screenshot

    Und unter SDL habe ich ja die Renderergebnisse schon auf einer Surface. Hat mich diese Seite gerade dran erinnert. Dann versuche ich das mal mit SDL. Danke für eure Hilfe.


Anmelden zum Antworten