Libs für moderne XP OpenGL/C++ Spieleprogrammierung

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
mnemonix
Establishment
Beiträge: 101
Registriert: 09.04.2010, 20:38

Libs für moderne XP OpenGL/C++ Spieleprogrammierung

Beitrag von mnemonix »

Hallo an alle ZFX'ler,

da ich mich gerne jetzt mehr mit moderner (portabler) 2D/3D OpenGL (3.0+) Spiele-/Grafikprogrammierung beschäftigen möchte, suche ich nach einer guten Zusammenstellung von Bibliotheken, die einem dies ermöglichen.

Mal anders gesprochen: Das proprietäre DirectX von M$ (Direct3D, DirectInput/XInput, XAudio, XNAMath, etc.) nimmt einem da ja schon ziemlich viel ab, wenn es um Grafik, Sound, Eingabe, Mathe, usw. geht. Dies möchte ich auch für mehrere Plattformen haben. Ich weiss es gibt da SDL (2.0 Release lässt leider auf sich warten), SFML, Allegro, ... aber ich hätte gerne an sich eher eine gute Kombination von separaten, gut durchdachten, optimierten und recht aktuellen Subsystemen. Hier mal ein paar Aufzählungen (wird ständig erweitert):
* Leider noch 'under construction'.

Wobei die SDL und das GLFW hier wieder mehr Ballast mit sich führen (was schlankeres wäre vielleicht wünschenswerter). Gut, Fenstermanagement und Tastatur-/Maus-Eingabe korrelieren meist, wegen der OS-Event-Queue. Das lässt sich schwer trennen.

Lasst uns einfach mal ein kleines Brainstorming machen. Kritik ist auch erwünscht (Subsysteme oder vollfunktionsfähige Multimedia-Bibliotheken).

Ich werde dann höchstwahrscheinlich die Liste oben aktualisieren, damit auch andere was davon haben.
Zuletzt geändert von mnemonix am 08.08.2012, 17:37, insgesamt 7-mal geändert.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2395
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Libs für moderne OpenGL Spieleprogrammierung

Beitrag von Jonathan »

Gute Idee :)
Aber kommt man nicht heute immernoch nicht um Extensions herum wenn man (unter Windows) moderne OpenGL Versionen benutzen möchte? Eine entsprechende Bibliothek, etwa glew würde dann noch fehlen.
Dann wäre vielleicht ein bisschen was zum Thema Ressourcen laden nicht verkehrt. Ich benutze für Texturen derzeit noch DevIL, aber nur weil es halt einmal läuft. Würde ich neuanfangen würde ich wohl zu FreeImage tendieren, das sieht rein vom Interface sehr viel cooler aus. Und wenn man schon beim Thema Ressourcen ist, kann man vielleicht auch gleich noch Assimp nennen. Das ist natürlich ein gewaltiger Brocken und einige Details könnten auch moderner sein, aber es gibt meines Wissens nach kein Projekt, dass vergleichbares leistet. Zumindest als Bauteil der Contentpipeline ist das eigentlich für jedes 3D Projekt lohnend.

Zu Input soll Schrompf mal was sagen, momentan benutze ich auch den GLFW Kram, aber der ist etwas beschränkt und ich würde gerne eines Tages etwas vernünftiges einbauen. Krishty hatte da glaube ich auch neulich ein paar Experimente, mal sehen, was da so rum kommt.

[edit]Letztendlich gehören zu DX ja auch eine Reihe Tools. Dann würde ich noch gerne AMD gDebugger erwähnen, die Weiterentwicklung vom original gDebugger, ein Tool das mir schon sehr weitergeholfen hat.[edit]
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Libs für moderne OpenGL Spieleprogrammierung

Beitrag von dot »

Für modernes OpenGL besser gl3w statt glew, da glew mit dem OpenGL Core Profile leider inkompatibel ist (zumindest im Moment).
Was Ressourcen laden angeht, sollte man wohl auch SOIL erwähnen.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Libs für moderne OpenGL Spieleprogrammierung

Beitrag von Schrompf »

Input ist ein moderat spannendes Thema. Nein, eigentlich ist es nur mühsam unspaßig, aber notwendig. Ich kenne mich da nur mit Windows aus. Je nach Anforderungen gibt es da das folgende:

Windows Messages: Maus und Tastatur, beschränkt auf eine systemweit gemeinsame Maus&Tastatur
DirectInput: angeblich deprecated, aber es führt aktuell kaum ein Weg daran vorbei. eine Maus&Tastatur, beliebige Joysticks, GamePads, wasweißichallesnochs, mit Rumble Feedback, tote Tasten bei XBox-Controllern
XInput: nur für XBox-Controller, aber sauber, einfach, ohne tote Tasten und mit Feedback
RawInput: mehrere Mäuse und Tastaturen, leider wieder über Windows Message Loop, über HID API auch alle anderen Joysticks, GamePads, usw.

und zusätzlich globale State-Funktionen wie GetAsyncKeyState()

Wir benutzen seit geraumer Weile OIS, was aus der obigen Liste DirectInput und nach User Patch auch XInput benutzt. OIS kann auch Linux und MacOS sowie ein paar Konsolen, glaube ich. Tilman (Sternmull hier im Forum) hat das vor langer Zeit für uns mal erweitert um ein einfaches Gesamtsystem drumherum, dass auch Action Mapping und sowas kann. Und als ich das jetzt für Splatter brauchte, hab ich es nochmal grob umgebügelt, so dass es auch RawInput benutzt und damit mehrere Mäuse/Tastaturen unterstützt. Das sollte damals schon Open Source werden, ist es aber wegen Pflegeaufwand, Doku und Einenglischung nie geworden, und das selbe gilt auch für das aktuelle System.

Mit ein paar Wochen Saubermachen und Erproben könnte man das wahrscheinlich zu einem neuen schicken Rundum-Sorglos-Eingabesystem aufwerten und irgendwo hochladen. Aber ich habe diese Zeit nicht. Und aktuell hat das System noch ein paar schwer zu erklärende spezifische Schwächen, die es für mich unangeraten erscheinen, das Projekt ohne umfangreiche Umarbeiten oder zumindest Doku irgendwo hochzuladen. Abzugeben an Privathände gern, aber die unvorbereitete Öffentlichkeit würde das Ding kaum mit Dankbarkeit empfangen.

Achja: und wer eigene DXT-Kompression braucht, kann auch Squisch benutzen. Winzige Lib, nur ein paar Sourcefiles irgendwo ins Projekt knallen, und dank Hand-SSE2-Optimierung von einem NVidia-Typen auch rasend schnell.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Antworten