Frage

Könnte jemand gute Ressourcen zum Erstellen grafischer Benutzeroberflächen empfehlen, vorzugsweise in C/C++?

Derzeit ist mein größter Einfluss 3DBuzz.com'S C++/OpenGL-VTMs (Video-Schulungsmodule).Obwohl sie sehr gut sind, decken sie einen großen Bereich der Grafikprogrammierung ab und streifen daher nur die Oberfläche der GUI-Programmierung.

Diese Frage bezieht sich auf „Wie erstelle ich eine GUI?", wo es auch einen groben Überblick über meine aktuelle Struktur gibt.

Jede Antwort wäre dankbar.

Bearbeiten:Ich habe gerade einige Antworten gelesen und festgestellt, dass ich einige Punkte übersehen habe.Ich musste die Frage zweimal eingeben, da ich den falschen Knopf erwischt habe und sie verloren habe.

Ich habe zunächst zwei wichtige Punkte übersehen:Dies wird plattformübergreifend einschließlich Homebrew auf einer Sony PSP verwendet.Zweite:Ich möchte ein GUI-System erstellen und kein vorhandenes verwenden.

Bearbeiten 2: Ich denke, einige von Ihnen verstehen nicht, worauf es ankommt, ich weiß nicht, was ich tun soll verwenden Ich möchte ein bestehendes GUI-System erstellen.

Qt ist in seiner aktuellen Form nicht auf die PSP portierbar, ganz zu schweigen vom Overkill einer solchen Aufgabe.

Vor diesem Hintergrund habe ich beschlossen, eine IM-GUI zu erstellen, und habe mit der Prototypenerstellung des Codes begonnen.

War es hilfreich?

Lösung

Ich würde OpenGL nicht für die GUI verwenden, es sei denn, Sie planen hardwarebeschleunigte und/oder 3D-Effekte, die Sie mit einem traditionelleren GUI-Toolkit (z. B Qt, wxWidgets, GTK, usw).Wenn Sie nur eine schnelle, einfache GUI zum Hosten Ihrer OpenGL-Grafiken benötigen, dann FLTK ist eine gute Wahl.Ansonsten gibt es zum Rendern der GUI direkt in OpenGL ähnliche Bibliotheken Crazy Eddies GUI die genau das tun und jede Menge bieten hautbar Widgets dass Sie nicht neu erfinden müssen.Der Fenster- und OpenGL-Kontext könnte dann mit einer tragbaren Bibliothek wie bereitgestellt werden SDL.

BEARBEITEN:Jetzt, wo ich zurückgegangen bin und mir deine angesehen habe anderer Beitrag Ich glaube, ich verstehe besser, was Sie fragen.Für eine GUI auf einem eingebetteten System wie dem Nintendo DS würde ich die Verwendung einer GUI im „Sofortmodus“ in Betracht ziehen. Jari Komppa hat ein gutes Tutorial darüber, aber Sie könnten mit C++ einen objektorientierteren Ansatz als den von ihm vorgestellten C-Code verwenden.

Andere Tipps

http://www.fox-toolkit.org verfügt über eine API-Referenz, wenn Sie wissen möchten, wie Sie mit einem bestimmten Framework arbeiten.Oder waren Sie eher an allgemeiner Theorie interessiert oder eher an der Frage, wie man die einfachen Dinge selbst erledigen kann?

Für weitere Informationen zur „Sofortmodus“-GUI kann ich die empfehlen Molly Rocket-Foren.Es gibt eine gute Videopräsentation der Idee hinter IM-GUI sowie zahlreiche Diskussionen.

Ich habe kürzlich ein sehr schnelles IM-GUI-System zusammengehackt, basierend auf der Präsentation auf Jaris Seite, und in meinem Fall wollte ich wirklich nur ein paar Schaltflächen und Kästchen auf den Bildschirm bringen und mehr oder weniger nur harten Code Aufgrund der Reaktion auf die Eingaben fühlte es sich wirklich wie das Richtige an, anstatt sich für eine umfassendere GUI-Architektur zu entscheiden.(Dies war in einer DirectX-Anwendung, daher war die Anzahl der Auswahlmöglichkeiten, die ich hatte, ziemlich begrenzt).

Eine der schnellsten Möglichkeiten ist die Verwendung von Python mit einer GUI-Bindung wie pyQt, PyFLTK, tkinter, wxPython oder sogar über pygame, das SDL verwendet.

Es ist einfach, schnell und plattformunabhängig.Auch die Verwaltung der Pakete ist unschlagbar.

Sehen:

Bei einer Plattform wie der PSP würde ich mir etwas Sorgen um die Leistung einer IM-GUI-Lösung machen.Bei einer herkömmlichen Lösung im beibehaltenen Modus können Sie beim Erstellen eines Steuerelements auch den Scheitelpunktpuffer/die Anzeigeliste oder was auch immer Sie benötigen, um es zu rendern, erstellen.Bei einer Lösung im Sofortmodus müssten Sie dies meines Erachtens bei jedem Frame dynamisch neu erstellen.

Das ist Ihnen vielleicht egal, wenn Sie nur ein paar Knöpfe machen, oder wenn es nicht im Spiel verwendet wird (vorausgesetzt, Sie machen ein Spiel), aber vor allem, wenn Sie ziemlich viel Text haben, sind die Kosten Das Rendern kann zu Problemen führen, wenn Sie keine Möglichkeit finden, die Anzeigelisten irgendwie zwischenzuspeichern.

Schauen Sie mal rein Qt.Es handelt sich um eine Open-Source-Bibliothek zur Erstellung von GUIs.Im Gegensatz zu Swing in Java werden viele Dinge vorausgesetzt, sodass es wirklich einfach ist, funktionale GUIs zu erstellen.Beispielsweise geht ein Textbereich davon aus, dass Sie ein Kontextmenü wünschen, wenn Sie mit der rechten Maustaste darauf klicken und „Kopieren“, „Einfügen“, „Alle auswählen“ usw. wählen.Der Dokumentation ist auch sehr gut.

Ich werde Qt unterstützen.Es ist plattformübergreifend und ich habe es gefunden viel einfacher zu handhaben als die integrierten grafischen Elemente von Visual Studio.Es ist doppelt lizenziert. Wenn Sie also nicht möchten, dass Ihr Code unter der GPL steht, können Sie stattdessen eine Lizenz erwerben.

Ich habe mir das Video von Molley Rocket angesehen und Jari Komppas zwischengespeicherte Tutorials durchgesehen.

Eine IM-GUI scheint der beste Weg zu sein. Ich denke, sie wird viel schlanker und viel schneller zu erstellen sein als das System, das ich ursprünglich im Sinn hatte.

Jetzt ein neues Problem, ich kann nur eine Antwort ausschließen.:(

Nochmals vielen Dank an Monjardin und dooz, Prost.

thing2k

Ich würde einen Blick darauf werfen GLAM Und GLGooey

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top