Autor |
Beitrag |
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Sa 17.03.07 00:04
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: wilson.kilu.de/counter/load.php?id=3
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
EDIT: Screenshot hinzugefügt
Einloggen, um Attachments anzusehen!
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Zuletzt bearbeitet von jakobwenzel am So 03.06.07 19:49, insgesamt 2-mal bearbeitet
|
|
alias5000
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Sa 17.03.07 01:16
hm, ich habe jetzt einfach mal deine kompilierte Demo gestartet und die geht irgendwie grad gar nimmer mehr. Der meldet mir am Anfang eine AV. Danach wird der gesamte Bildschirm weiß und im Sekundentakt kommen AV- Meldungen, die ich nicht sehen kann (man hörts halt und bekommts zu Gesicht, wenn man den Taskmanager mal in den Vorderfrund ziehen konnte)
Gruß
alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Sa 17.03.07 12:06
Haste alles extrahiert oder die Exe direkt aus dem Archiv gestartet?
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
alias5000
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Sa 17.03.07 12:38
Nene, schon alles extrahiert
_________________ Programmers never die, they just GOSUB without RETURN
|
|
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Sa 17.03.07 14:36
Komisch, ich hab das jetz auf 3 Computern ausprobiert und auf keinem kann ich den Fehler reproduzieren.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Danniolo
Beiträge: 693
|
Verfasst: Sa 17.03.07 20:40
Bei mir gehts! Allerdings ist der Mauszeiger etwas träge - die Bewegungen werden also erst mit einige gewissen Verzögerung umgesetzt. (Framerate: 85FPS - VerticalSync ist über den Treiber aktiviert)
Wäre schön, wenn man das noch verbessern könnte, also dass der Mauszeiger direkt anspricht.
Ansonsten: super!
|
|
Eddie
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: Sa 17.03.07 20:40
Hi, ich habs grad mal bei mir ausprobiert. Es funktioniert einwandfrei ^^
Und ich kann nur eins dazu sagen: Respekt!!!
Sieht genial aus, ich werd wohl noch ein wenig damit rumspielen.
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Sa 17.03.07 20:52
Danniolo hat folgendes geschrieben: | Bei mir gehts! Allerdings ist der Mauszeiger etwas träge - die Bewegungen werden also erst mit einige gewissen Verzögerung umgesetzt. (Framerate: 85FPS - VerticalSync ist über den Treiber aktiviert)
Wäre schön, wenn man das noch verbessern könnte, also dass der Mauszeiger direkt anspricht. |
Das wird eigentlich schon so direkt umgesetzt, wie es mit eigenem Mauszeiger geht.
Stockt die Bewegung, oder ist sie einfach nur verzögert?
Ansonsten noch danke für das Lob.
Wenn das mal jemand mit NVidia-Grafikkarte testen könnte wäre das toll, denn ich hab hier zu Hause nur ATI-Karten, bei einem Freund mit NVidia-Karte gibts jedoch kleine Darstellungsfehler bei den Checkboxen und Radiobuttons. Kann das irgendwer reproduzieren?
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
alias5000
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Sa 17.03.07 21:07
ich kann das nachher mal auf Vista mit nem Intel 945 GM Chipsatz testen. Nur halt jetzt nich, da kriege ich dann Haue, weil meine Family darüber ne DVD gucken will
Gruß
alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Danniolo
Beiträge: 693
|
Verfasst: Sa 17.03.07 21:16
jakobwenzel hat folgendes geschrieben: | Das wird eigentlich schon so direkt umgesetzt, wie es mit eigenem Mauszeiger geht.
Stockt die Bewegung, oder ist sie einfach nur verzögert? |
Die Bewgung stockt nicht - sie ist ledigleich verzögert.
jakobwenzel hat folgendes geschrieben: |
Wenn das mal jemand mit NVidia-Grafikkarte testen könnte wäre das toll, denn ich hab hier zu Hause nur ATI-Karten, bei einem Freund mit NVidia-Karte gibts jedoch kleine Darstellungsfehler bei den Checkboxen und Radiobuttons. Kann das irgendwer reproduzieren? |
Bei mir (Nvidia GeForce 6800 GT) gibt es keine erkennbaren Grafikfehler (siehe hier).
|
|
Eddie
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: Sa 17.03.07 22:20
Ich habe eine nVidia GeForce 7950GT und es wird auch alles ohne Probleme/Darstellungsfehler angezeigt.
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 18.03.07 13:29
Hallo Jakob,
2 Dinge fallen mir gerade zu deinen Komponenten ein.
Zum einem: Woran liegt es, dass das Umstellen des Styles bei 800 FPS immer noch 2-3 Sekunden dauert? Denn an OpenGL liegt es garantiert nicht .
Und zum zweiten: Kannst du mal eine Kleinigkeit testen (wenn ich deine Demo selber kompiliere bekomme ich nur AVs )? Und zwar: Verkleine mal irgendeine deiner OpenGL-Kompos auf so ca. 5Px. Warum ich Frage? Ich habe selber mal angefangen OGL-Kompos zu schreiben. Ergebnis: OpenGL scheint nicht dafür geeignet zu sein .
Grüße HEiko
|
|
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: So 18.03.07 13:38
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 18.03.07 13:52
|
|
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: So 18.03.07 13:58
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 18.03.07 14:07
jakobwenzel hat folgendes geschrieben: | Find ich nicht, dadurch reduziert sich der Aufwand beim erstellen eines neuen Styles (grad nur noch ein Bild machen), es können theoretisch neue Styles hinzugefügt werden, ohne das Programm neu zu kompilieren. Du würdest die Buttons dann aus mehreren verschiedenfarbigen Teilen zusammensetzen, oder was? |
Siehe Link. Wenn du Bilder verwendest, ist es klar, warum es funktioniert. Aber: IsSt es nicht übertriebemn für jeden Button ein Bild zu nehmen? Eigentlich zeichnet man das direkt mit OGL . jakobwenzel hat folgendes geschrieben: | Komisch... Haste irgendwas an der Demo geändert? |
Nein. Ich habe lediglich bei Fear2D die Version von Martok verwendet, weil die von Fear wegen seinem ServerCrash ja nimmer da ist, verwendet und dort alles, was mit Sound zu tun hat ausgeklammert. Aso, könnte es vlt. daran liegen, dass ich bei der glCompos-Unit ne ganze Menge an TExturen-Prozeduren ausgeklammert habe, da du da irgendeine Konstante nimmst, die meine Units nicht kennen (glBitmap 1.8.10; dglOpenGL V1.8 BETA)?
Zuletzt bearbeitet von Heiko am So 18.03.07 14:14, insgesamt 1-mal bearbeitet
|
|
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: So 18.03.07 14:11
Heiko hat folgendes geschrieben: | Aso, könnte es vlt. daran liegen, dass ich bei der glCompos-Unit ne ganze Menge an TExturen-Prozeduren ausgeklammert habe, da du da irgendeine Konstante nimmst, die meine Units nicht kennen (glBitmap 1.8.10; dglOpenGL V1.8 BETA)? |
Ich hab die glOpenGl V2.0, daran dürfts liegen.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
F34r0fTh3D4rk
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 06.04.07 18:23
die qualität ist bei mir ziemlich mies, wenn ich AA aus habe, vor allem weil die schrift dann so dick ist. ansonsten siehts sehr schick aus
ansonsten ne coole unit sieht auch alles sehr schick aus. praktisch wäre noch ein editor für die grafiken, damit man die leichter selbst machen kann
ahja und dass man den buttons verschiedene größen geben kann, wäre wirklich net schlecht, dann musst du die button grafik nur geschickt zerteilen und wieder zusammenfügen
mfg
|
|
jakobwenzel
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Sa 07.04.07 16:34
F34r0fTh3D4rk hat folgendes geschrieben: | die qualität ist bei mir ziemlich mies, wenn ich AA aus habe, vor allem weil die schrift dann so dick ist. ansonsten siehts sehr schick aus
|
Das liegt wahrscheinlich an ClearType. (Zumindest ist es bei mir aus, es sieht normal aus, und auf einem anderen Rechner wo es an ist, tritt der selbe Fehler auf) Ich bastel momentan an ner neuen Version, da wird das dann automatisch deaktiviert.
F34r0fTh3D4rk hat folgendes geschrieben: |
ansonsten ne coole unit sieht auch alles sehr schick aus. praktisch wäre noch ein editor für die grafiken, damit man die leichter selbst machen kann
|
Das ist doch einfach nur ne Zip-Datei in der die ganzen Grafiken liegen. Ein eigener Editor ist da IMHO ziemlich nutzlos.
F34r0fTh3D4rk hat folgendes geschrieben: |
ahja und dass man den buttons verschiedene größen geben kann, wäre wirklich net schlecht, dann musst du die button grafik nur geschickt zerteilen und wieder zusammenfügen |
Einfach width und height setzen, oder meinst du irgendwas anderes?
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 07.04.07 16:38
Wenn du eh am basteln einer neuen bist: könntest du das vielleicht so machen, dass man das auch halbwegs portieren kann?
Ich versuche grade, das ganze mit SDL kompatibel zu machen, aber neu schreiben scheint wohl einfacher zu werden....
EDIT: ahja...glBitmap ist Windows-Only. Gut, dann brauchen wir eh eine neue mit SDL_IMAGE...
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|