C++ Welche portable GUI Bibliotheken nimmt man heute?

TheLordix

Ensign Pro
Registriert
Sep. 2010
Beiträge
214
Hallo zusammen!

Ich will nach längerer Pause wieder in die GUI und 2D-Spieleprogrammierung einsteigen und meine veralteten C++ Fähigkeiten auffrischen. Da Plattform und Zweck der Programme noch nicht feststehen wollte ich mal fragen was man heutzutage so für Bibliotheken nimmt. Erfahrung habe ich nur mit Visual Studio C++/C#/.Net und den Standard Java-Bibliotheken aber teilweise auf einen Wissenstand von 2005.

Anforderungen:
- GUI Framework für Tools (mit einigermaßen "nativ Look and Feel")
- Portabel Windows, Linux (evt. Android)
- 2D Grafik für Spiele
- Sound, Eingabe, Netzwerk, ect. für Spiele
- einigermaßen Einsteigerfreundlich (schnelle Erfolge, kein monatelanges Einarbeiten für Basics)

Meine Idee wäre jetzt für die Toolentwicklung Qt, WxWidget oder GTK+ zu nehmen, kann aber nicht beurteilen was sinnvoller ist.
Für die 2D-Spieleentwicklung hätte ich SFML oder SDL genommen.

Bitte um Meinungen und Kommentare dazu! Evt. war ja jemand in einer ähnlichen Situation und kann mir eine Bibliothek empfehlen oder aus Erfahrungen abraten!

Danke!
 
Von gtk+ rate ich dir ab. Zu QT bzw. wxwidgets kann ich dir sagen das es reine Geschmackssache welches man nimmt. wxwidgets ist aber näher an der C++ Syntax als QT. Für die 2D Programmierung eignet sich SDL gut.
 
Ich arbeite seit einiger Zeit mit Qt und bin schwer begeistert... würde es daher uneingeschränkt für Projekte mit deinen Anforderungen empfehlen. Ich würde mitlerweile sogar so weit gehen und selbst Konsolenapplikationen mit Qt (aber ohne Gui) bauen weil es die Entwicklung einfach deutlich vereinfacht imho. Wenn ich die Wahl habe zwischen einer boost und einer Qt Lösung würde ich auch eher die von Qt wählen weil diese (imho!) viel besser dokumentiert sind und mir die Api auch einfacher zu benutzen fällt.
Was willst du genau wissen?
2D braucht kein extra Framework mehr. Das Graphics View Framework von Qt, welches aus http://doc.qt.io/qt-5/qgraphicsscene.html und http://doc.qt.io/qt-5/qgraphicsview.html besteht, erfüllt sicher alle Anforderungen und ist wirklich sehr einfach und bequem zu benutzen und auf jeden Fall performant genug für 2D games. Optional kann man es in OpenGL rendern wie in dem obigen Link erklärt wird.
 
Zuletzt bearbeitet:
Qt.
 
Guten Morgen zusammen!

Danke für die Meinungen bisher.

@kuddlmuddl:
Verstehe ich das richtig, das man bei Qt keine extra "Spiele 2D-Bibliothek" wie SDL oder SFML benötigt, da die Performance in 2D vergleichbar ist? Und die Möglichkeiten für Eingabe, Sound & Co reichen bei Qt auch aus, oder brauche ich da dann noch etwas anderes dazu? Das wäre nämlich ideal, wenn ich mich auf eine Bibliothek konzentrieren könnte und nicht 2 verschiedene lernen muss.

@ModellbahnerTT:
Ist das ein Problem mit der Syntaxnähe zu C++ oder reine Geschmackssache?

Sorry für diese Anfängerfragen, aber ich habe die Doku bisher nur kurz überflogen und bin noch nicht so tief in der Materie.
 
Verstehe ich das richtig, das man bei Qt keine extra "Spiele 2D-Bibliothek" wie SDL oder SFML benötigt, da die Performance in 2D vergleichbar ist?
Ich habe es nie gemessen oder benchmarks gegen andere 2D libs gesehen aber es gibt bei Qt seit ewigkeiten ein mitgeliefertes Beispiel was 4x gleichzeitig die selbe 2D Szene rendert die aus mehr als 100.000 Objekten besteht (Link). Diese 4 Darstellungen sind problemlos unabhängig von einander skalier, dreh und verschiebbar. Wie gesagt: Optional auch mit OpenGL und spätestens dann wird kaum eine Grafikkarte ein Problem damit haben ein paar Objekte in 2D darzustellen.
Ich gehe also stark davon aus, dass es mehr als ausreichend ist für jede Art von 2D game.
Sound habe ich nie verwendet aber http://doc.qt.io/qt-5/audiooverview.html und http://doc.qt.io/qt-5/qsound.html sehen vielversprechend aus?
Eingabe ist sehr einfach mit Qt. Jede art von Interaktion (mouseover, click, button down, release etc) hat ein eigenes Event was man optional überschreiben und selbst handlen kann. Hier gibts den Weg über Eventfilter, bsp

Das wäre nämlich ideal, wenn ich mich auf eine Bibliothek konzentrieren könnte und nicht 2 verschiedene lernen muss.
So siehts aus!
 
TheLordix schrieb:
Verstehe ich das richtig, das man bei Qt keine extra "Spiele 2D-Bibliothek" wie SDL oder SFML benötigt, da die Performance in 2D vergleichbar ist? Und die Möglichkeiten für Eingabe, Sound & Co reichen bei Qt auch aus, oder brauche ich da dann noch etwas anderes dazu? Das wäre nämlich ideal, wenn ich mich auf eine Bibliothek konzentrieren könnte und nicht 2 verschiedene lernen muss.

Qt bietet mehrere Möglichkeiten, 2D zu rendern. Es gibt im Qt Graphics subsystem QPainter, das Interface ist vergliechbar mit den Hilfsmethoden, die es auch in SDL oder SFML gibt, in der Performance nimmt sich das nichts. Außerdem gibt es auch direkt einen OpenGL Canvas auf dem man dann rendern kann, wenn du das machst kommt es auf die Performance deines Codes an und nicht die des Frameworks.
 

Ähnliche Themen

Zurück
Oben