Schatten und Licht

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Schatten und Licht

Beitrag von Hellhound66 »

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.
Benutzeravatar
Spirit
Beiträge: 174
Registriert: 13.04.2005 19:09

Beitrag von Spirit »

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

Beitrag von Hellhound66 »

Das ist das Problem. Ich kann mir die paar Prozent nicht leisten, nicht für ne winzige Kleinigkeit. Außerdem möchte ich im Spiel / Anwendung auch Schatten einführen und die Softwaremäßig darstellen, da brauch ich einen P20 mit 3 Trillionen MHz..
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

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.
I´a dllfreak2001
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Danke für den Tipp, werd ich am WE mal machen.
Antworten