Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.06.2013, 08:59

[OpenGL GLUI] Eigene Klasse für GUI nicht möglich?

Guten Morgen,

Vorhaben: Ich schreibe gerade an einer 2-Spieler Variante von Conways Game of Live mit OpenGL. Das Grundspiel für einen Spieler ist bereits fertiggestellt und funktioniert ohne Probleme. Ich habe dabei neben der Main nur eine Klasse bisher, nämlich das GameField. Ich hab mich nun umgesehen wie ich in OpenGL eine ordentliche GUI realisiere und bin dabei auf GLUI gestoßen. Auch hier eine kleine Test-GUI geschrieben, die ohne Probleme funktioniertG.

Problem: Ich hätte das GUI gerne in einer eigenen Klasse ausgelagert. GLUI arbeitet mit Live Variablen und Callback Funktionen. Wenn ich also z.B. einen Button hinzufüge gebe ich ihm die Adresse einer callback_func an. Dies funktioniert aber ausschließlich wenn entweder die Funktion Global in der selben Datei steht oder (wenn ich als Callback eine Klassenfunktion benutzen möchte) wenn diese Funktion statisch ist. Wenn ich die Funktion statisch mache, kann ich aber nicht auf die anderen Teile des GUI-Objekts zugreifen. Logischerweise.

Frage: Kennt sich jemand genug mit GLUI aus und hat eine Idee wie ich die GUI auch mit der Callback Funktion in eine eigene Klasse bekomme? Geht das überhaupt? Gibt es eventuell bessere Möglichkeiten (Libs) eine GUI mit OpenGL zu realisieren?

Grüße Dergell

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

14.06.2013, 12:21

Ich kenn mich mit GLUI nicht aus, aber es ist doch eigentlich auch kein Problem selbst eine kleine GUI zu entwickeln? Das meiste sind nur 2D Flächen mit einer Textur. Für Text kannst du dann immer noch was anderes nehmen.
Übrigens ist Code immer sehr Hilfreich bei Problemen ;) Vor allem wenn dein Programm noch nicht so groß ist.

Hier ist was zu function pointern, etwa in der Mitte geht es um Pointer zu Methoden, bzw. ein Workaround (man kann von Objekten soweit ich weiß keine function pointer bekommen).

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

14.06.2013, 12:30

Kann man schon. Soweit ich das im Kopf habe muss man bei der Deklaration des Funktionszeigers dann aber mit angeben von welcher Klasse die Methode stammt. Hab das bei C++ nicht mehr ganz auf dem Schirm, besonders schön war es allerdings nicht. Und eine fertige GUI zu benutzen macht meiner Meinung nach schon sinn. Klar kann man sowas selbst schreiben, je nachdem was man aber so alles braucht kann das schon aufwendiger werden und die Zeit die man in die GUI steckt könnte man ja auch in das Spiel stecken. Das ist ja im Prinzip so, als wenn der eine sein Spiel gern mit DirectX schreiben möchte und der andere lieber Unity nimmt, weil er sich auf andere Dinge konzentrieren möchte. Ist also schon ok sowas zu nutzen. Ich kenne mich mit GLUI allerdings auch nicht aus und ohne Code kann ich da auch nichts zu sagen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

4

14.06.2013, 13:46

Danke für die Antworten!

Ich hab mich mal ein wenig schlau gemacht. GLUI ist einfach eine winzige Lib mit der man schnell und einfach ein kleine GUI hinbekommen soll. Ich hab mich dann weiter nach einer anderen Lib umgesehen aber ich finde überall nur Leute die ihre Lieblingslib voran schieben. Zu keiner davon gibt es aber eine gescheite Doku, Tutorials oder was in der Richtung.
Das vielversprechendste was ich gefunden hab war MyGUI, ursprünglich für Ogre, geht aber auch mit DirectX und OpenGL. Das Problem hier: Es gibt zwar eine tolle Doku aber ich habe nicht den geringsten Schimmer wie ich die Lib effektiv in mein OpenGL einbaue. Es gibt nur ein einziges Tutorial und das kann ich nicht benutzen weil die Seite bei mir abstürzt....
Hier: http://www.ogre3d.org/tikiwiki/MyGUI+quickstart

Jemand ne bessere Idee? Ich weiß gerade nicht was ich weiter tun soll >.<

Zum Thema selbst schreiben: Hätte ich theoretisch nichts dagegen. Praktisch fehlt meinem Projekt hauptsächlich nur die GUI und ich muss das Ding in einem Monat fertig haben. Deshalb keine Zeit zum selbst schreiben.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

5

14.06.2013, 16:14

Die Frage ist doch was du alles an GUI Elementen benötigst? Wenns nur etwas Text und Buttons sind würde ichs selbst schreiben. Das geht dann wahrscheinlich schneller. Komplizierter wirds dann wenns mit Eingaben usw. los geht.
Kannst du uns sagen was du brauchst? Dann kann mans vielleicht besser abwegen. Und warum nicht das GUI System von Ogre klauen, falls möglich?

6

15.06.2013, 20:54

Etwas Text und Buttons hatte ich sogar schon selbst programmiert :D

Ich bräuchte am Ende aber Dropdows, Eingabefelder mit speziellen Konditionen und öhm.... so kram halt. Keine extremen Sachen aber mehr als nur Button halt.

Ich dachte das GUI von Ogre wäre dieses MyGUI? Da wie gesagt, das Problem, die getting started Seite funktioniert nicht...
Sehr aktuell soll ja libRocket sein. Da gibt es ein Forum und gute Dokus, leider hab ich auch da kein Schimmer wie ich das integrieren kann, ohne erst ewig herumprobieren zu müssen.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

7

16.06.2013, 01:30

Da wie gesagt, das Problem, die getting started Seite funktioniert nicht...


Seite im IE öffnen, der fragt dich dann, ob du das Hintergrundscript abbrechen willst.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

16.06.2013, 09:04

Wie wärs mit CEGUI?

9

16.06.2013, 16:09

Ich danke euch für eure Hilfe aber ich bin gerade völlig am verzweifeln. Irgendeine Macht will nicht, dass ich das hinkriege.

Ich hab mir sowohl MyGUI als auch CEGUI angesehen, aber ich bekomm beides nicht zum laufen. Ich finde haufenweise zusammenhanglose Guides und Kram dazu, aber keins davon fängt einfach mal vorne an und sagt mir "Das brauchst du zum initialisieren und das brauchst du um deine Eingaben abzufangen" und so weiter. Die stellen mir alle irgendwelche Codeschnipsel hin, geben keine Erklärung dazu und wenn ich die Schnipsel selbst versuche einzubauen, geht gar nix mehr.

Versteht mich nicht falsch, ich bin nicht gerade der typische Anfänger, der nur keine Ahnung hat. Ich habe schon viele Libs für andere Dinge verwendet aber hier scheitere ich gnadenlos. Gibts nicht einfach ne sinnvolle Doku dazu? Gibts für alle anderen Libs doch auch... Mir ist mittlerweile egal was ich benutzen soll, Hauptsache etwas dass mal funktioniert.

Jetzt mal direkt die Frage an euch: Wenn ihr mir schon eine Lib vorschlagt, dann gebt mir doch bitte auch Referenzen dazu. Wie habt ihr den Kram denn gelernt und zum laufen gebracht?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

16.06.2013, 22:37

Versteht mich nicht falsch, ich bin nicht gerade der typische Anfänger, der nur keine Ahnung hat. Ich habe schon viele Libs für andere Dinge verwendet aber hier scheitere ich gnadenlos.

Woran genau scheitert es? Daran die Library zu kompilieren? Daran sie einzubinden? Ist dir nicht klar, wie sie zu verwenden ist? CEGUI ist vermutlich die populärste Library dieser Art überhaupt; ich verwend es zwar selbst nicht, aber es fällt mir irgendwie doch schwer, mir vorzustellen, dass es dazu nicht genug Information gäbe... ;)

Jetzt mal direkt die Frage an euch: Wenn ihr mir schon eine Lib vorschlagt, dann gebt mir doch bitte auch Referenzen dazu. Wie habt ihr den Kram denn gelernt und zum laufen gebracht?

Der Link zu CEGUI führt direkt in ein entsprechendes Wiki, in dem sich Dokumentation, FAQ und Tutorials finden...

Werbeanzeige