Mahlzeit,
ich muss ehrlich sagen, dass ich ein Newbie bin, was DirectX / OpenGL Programmierung angeht, meine Spezialität war immer das Schreiben meiner eigenen Assemblerroutinen. Aber gut, ich muss mit der Zeit gehen.
Meine Frage:
Ich erfinde gerade das Rad nochmal und entwickel eine GUI mit vererbbaren Objekten ( zumindest sowas ähnliches ), und bin gerade bei der grafischen Ausgestaltung. Dafür greife ich, da ich Frontbuffering nutze, auf die Sprite-Routinen zurück. Da kam mir noch die Idee, den Fenstern einen transparenten Schatten zu verschaffen und andere Leucht / Lichteffekte einzubauen. Jetzt habe ich das Problem, dass ich diese implementieren möchte, ohne meine Oberfläche Quasi-3D zu machen ( was ne coole Idee wär, aber das mach ich besser später mal ).
Zum Schatteneffekt: Zuerst wollte ich DisplayRGBFilter() nutzen, da kann ich aber nur aufhellen, dann dachte ich, Mensch ich nehm einfach ein winziges 8-Bit Sprite (8x8) und stelle es multiple dar, um den Schatten mittels DisplayShadowSprite() zu erzeugen. Das ist aber keine zufriedenstellende Lösung für mich, da die GUI noch für komplexere Anwendungen herhalten soll, kann ich mir Performanceverlust nicht leisten (mal abgesehen davon, dass ich Perfektionist bin).
Zum Leuchteffekt: Tja, da steh ich da wie Karl Napp der Abwaschbare. Ich habe keine Ahnung, wie ich den Hardwaremäßig auf ner 2D Umgebung generiere.
Weitere Frage: Wieviel Sinn oder Unsinn macht die StartSpecialFX()-Routine. Wenn ich das richtig gelesen habe, kann ich mir die ganze Hardwareunterstützung in die Haare schmieren, wenn ich die Funktion aufrufe. Oder hab ich mich da bös verlesen?
Letzte Frage: Ich benötige einen Profiler, wo ich einzelne Routinen auf Geschwindigkeit testen kann. Wenn mir da einer einen Tipp geben könnte...
Danke im Voraus.
Schatten und Licht
Um Licht und Schatten darzustellen, könnte man den DrawingBuffer() Befehl benutzen und im Grafikspeicher die Pixel direkt manipulieren. Für Schatten zieht man dann von Farbwert etwas ab, sodass die Farbe dunkler wird, bei Licht addiert man etwas hinzu. Wenn man nicht zuviel damit darstellen möchte, dürfte es keine großen Geschwindigkeitsprobleme geben.
-
Hellhound66
- Beiträge: 476
- Registriert: 23.03.2005 23:19
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
wenn du doch mal per sprite3d machen willst:
Du könntest Sprite3d´s verwenden
mit Sprite3dblendingmode(5,7) (rgb-addition)
kann man licht erzeugen.
Probier auch andere Sprite3dblendingmode-modis aus dann kannst du auch Schatten erzeugen.
Das ganze ist dann über direct3d hardware-gerendert, also weniger cpu-last.
Du könntest Sprite3d´s verwenden
mit Sprite3dblendingmode(5,7) (rgb-addition)
kann man licht erzeugen.
Probier auch andere Sprite3dblendingmode-modis aus dann kannst du auch Schatten erzeugen.
Das ganze ist dann über direct3d hardware-gerendert, also weniger cpu-last.
I´a dllfreak2001
-
Hellhound66
- Beiträge: 476
- Registriert: 23.03.2005 23:19