Einzelnen Beitrag anzeigen

Benutzerbild von jakobwenzel
jakobwenzel

Registriert seit: 31. Aug 2005
Ort: Ingelheim am Rhein
141 Beiträge
 
FreePascal / Lazarus
 
#1

glComponents - GUI für OpenGl

  Alt 19. Mär 2007, 18:09
Normale VCL-Komponenten sind auf OpenGl-Formularen nicht mehr sichtbar und oft will man (für Spiele) auch nicht das Standardaussehen, sondern ein eigenes.

Hierfür habe ich glComponents geschrieben.
Das Projekt bietet ein Bitmap-Fontsystem und die meisten Standard-Komponenten für OpenGl.

Die Komponenten wären im Einzelnen:
  • TglLabel
  • TglPanel
  • TglButton
  • TglEdit
  • TglCheckbox
  • TglRadioButton
  • TglImage

Besonderheiten sind:
  • Animierte Statusübergänge der Komponenten
  • Skinnbar
  • Image und Button unterstützen nicht POT-Bilder Geschwindigkeitsverlust und auch auf alten Rechnern

Hinweis: Es wird nur Y-Ursprung oben unterstützt, Standard für OpenGl ist jedoch unten
So funktioniert das ganze Perfekt zusammen mit Fear2d




Die Verwendung von glComponents erfolgt ähnlich wie die manuelle Initialisierung von VCL-Komponenten, es müssen allerdings einige Besonderheiten beachtet werden.

Zuerst muss eine zentrale Verwaltungsklasse vom Typ TglManager erstellt werden. Deren Konstruktor wird als Parameter entweder Breite und Höhe des Formulars oder direkt das Formular übergeben. Optional kann auch noch der Standardskin und das Verzeichnis angegeben werden.

Nun können einzelne Komponenten erstellt werden. Hier sind die Parameter des Konstruktors entweder nur die Verwaltungsklasse oder eine übergeordnete Komponente.

Die meisten Eigenschaften der Komponenten orientieren sich an der VCL, eine Ausnahme bildet jedoch Color:
Hier werden OpenGl-typisch die Rot-, Grün-, Blau- und Alphawerte (Transparenz) einzeln in Single-Variablen mit dem Wertebereich 0 - 1 gespeichert. Normale Delphi-TColor-Werte können über die Methode FromTColor benutzt werden.


Damit die Eingaben nun auch bei den Komponenten ankommen, müssen mehrere Arten von Ereignissen an die Verwaltungsklasse weitergeleitet werden.

Das sind im einzelnen:
  • MouseDown
  • MouseUp
  • MouseMove
  • KeyDown
  • KeyUp

In der Ereignisbehandlung müssen nun die gleich benannten Methoden der Verwaltungsklasse aufgerufen werden, die in der Regel auch die selben Parameterlisten haben.

Zusätzlich muss noch die Windows-Botschaft CM_DIALOGKEY abgefangen werden (die zugehörige Ereignisbehandlung muss dann leer sein), damit auch auf die Tab-Taste reagiert wird.


Die gesamte GUI kann hier inklusive eines Demo-Projekts runtergeladen werden: http://wilson.kilu.de/counter/load.php?id=3 (583kb)

Lizenz: 2-clause-BSD
Aktuelle Version: 0.1

Benötigte Units:
  • Fear2d: Nur für die Demo benötigt, Initialisierung kann auch manuell erfolgen
  • dglOpenGl: Sollte eigentlich auch mit anderen OpenGl-Implementationen für Delphi laufen, habe ich aber nicht getestet
  • glBitmap
Miniaturansicht angehängter Grafiken
glc_733.jpg  
Jakob Wenzel
"My store now sells Ninja Weapons!"
Comicverkäufer bei den Simpsons
  Mit Zitat antworten Zitat