OpenGL/GLUT mit UI-Elementen



  • Ich bin dabei ein Spiel mit OpenGL/GLUT zu entwickeln und frage mich wie man grafische Elemente wie Buttons, Text und einfache PNG-Bilder in das von GLUT erzeugte Fenster integrieren kann?

    // Codeausschnitt zum Erzeugen des Fensters mit GLUT
        glutInitWindowSize(960, 540);
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
        glutCreateWindow("GameWindow");
    

    Es soll ein kleines 3D Shooter Game werden und dafür brauche z.B. einen Start-Button, Text zum Anzeigen der Punkte und anstelle des Mauszeigers soll ein Zielvisier durch ein einfaches Bild abgebildet werden.
    Ist es möglich eine Bibliothek wie Qt zusammen mit GLUT zu verwenden, um GUI-Elemente abzubilden oder was wäre die beste Lösung?



  • Die Integration einer Lib wie QT halte ich für absolut oversized. Die typischen Fenster-UIs machen ja n haufen Zeug mit, z.B. Layout-Management, Data Binding etc.

    Ob es gute OpenGL-UI-Bibliotheken gibt, weiß ich nicht, aber wenn es echt nur um ein paar Buttons geht, würde ich das selbst implementieren. Das hat den Vorteil, dass du volle Kontrolle über den Stil hast. In einem Game sollten die Buttons zur Spieloptik passen. Du wirst ja wohl kaum Windows 98-like 3D-Buttons in die UI hauen wollen!

    Zur Implementierung brauchst du halt ne Klasse, die eine render-Methode und eine hitTest-Methode (ist Punkt (Mauszeiger) im Rechteck?), welche du in deiner Eingabeverarbeitung aufrufst. Vielleicht wrappst du die Menge aller Steuerelemente vielleicht noch in einen UI-Container, der selbst wiederrum einen hitTest und ein render implementiert und das iterativ für alle Steuerelemente aufruft.

    Ist n 20-Zeiler, und du hast keinen Overhead...





  • @8bit-dude
    Okay, wenn ich das ohne Bibliothek umsetze, wie kann man dennoch mit OpenGL Schrift und Text erzeugen oder wirklich ein Bild auf dem Fenster abbilden. Ich weiß wie man mit glBegin(GL_LINES) z.B. Rechtecke zeichnen kann, aber Schrift ist doch kompliziert, vor allem, wenn sie sich ändert? Ich bin da leider noch sehr unerfahren. Leider finde ich auch keine hilfreichen Tutorials wo in ein OpenGL/GLUT Programm UI-Elemente eingebaut werden.

    @dot
    Die Beispiele sehen gut aus. Ich würde auch gerne eins davon nehmen, nur weiß ich nicht welches am besten mit OpenGL/GLUT zusammen verwendet werden kann. Auch hier ist es schwierig passende Anleitungen zu finden, die wie bei mir "glutCreateWindow("GameWindow");" aufrufen und die UI-Elemente anschließend integrieren.

    Das hört sich jetzt so an als ob ich nichts kann oder nichts machen will. Ich bin mir sicher, ich bekomme das hin, wenn ich erstmal Beispielcode sehe wo wirklich in ein GLUT-Fenster ein UI-Element wie Text eingebaut wird. Ansonsten bedanke ich mich für die Hilfe und werde es weiterhin versuchen


Anmelden zum Antworten