Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Lightmap mit DirectX9 funktioniert nicht (https://www.delphipraxis.net/112404-lightmap-mit-directx9-funktioniert-nicht.html)

.chicken 20. Apr 2008 16:57


Lightmap mit DirectX9 funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich wollte ueber meine Textur eine Lightmap legen und habe das dem Buch DirectX9 in Delphi nachprogrammiert.
Aber irgendwie habe ich das Gefühl er bildet immer den mittleren Farbwert der Lightmap und legt den einfach überall über die Textur, statt dass er einzelne Punkte erhellt oder verdunkelt.

Hier mal mein Code für das Zeichnen Lightmap:
Delphi-Quellcode:
  Device.SetFVF(D3DFVF_Vertex);
  Device.SetTexture(0, Texture);  //Texture is die normale Textur
  Device.SetTexture(1, Lightmap); //Lightmap natürlich die Lightmap ^^
  Device.SetStreamSource(0, VB, 0, sizeof(TVertex));
  //so, hier setze ich nun die texturestages, die angelich die Lightmap drüber blenden sollen
  //eigentlich sollten weisse flecken auf der lightmap die textur erhellen
  //schwarze flecken natürlich verdunkeln
  Device.SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
  Device.SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
  Device.SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
  Device.SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_TEXTURE);
  Device.SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);
  Device.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
Also im Moment liegt beim Start eine schlicht weisse Lightmap drüber, aber rechts könnt ihr ja andere Maps auswählen. Ich häng das Projekt mal an, allerdings müsst ihr dazu 2 Dll-Dateien in das System32 Verzeichnis kopieren, sonst kommt beim Programmstart immer der Fehler dass "DirectX9.dll nicht gefunden wurde" oder sowas. Keine Ahnung woran das liegt.

Die Dlls gibts hier:
http://minfos.de/buch/support.shtml
Sind nicht Passwort geschuetzt!

Wäre seeeeehr dankbar, wenn mir wer hilft! Weiss nicht worans liegt, der Code steht genau so im Buch...


Grüße, chicken

TGLDX 20. Apr 2008 18:20

Re: Lightmap mit DirectX9 funktioniert nicht
 
Hallo!

Da du anscheinend nur eine Texturkoordinate hast musst du Folgendes hinzufügen, sonst wird immer (0|0) genommen:
Delphi-Quellcode:
Device.SetTextureStageState(1, // Die 2. Texture
                            D3DTSS_TEXCOORDINDEX,
                            0) // soll den Index der 1. mitbenutzen
mfg
TGLDX

.chicken 20. Apr 2008 19:04

Re: Lightmap mit DirectX9 funktioniert nicht
 
Juhuuuu, das wars, danke!
Also muss ich entweder fuer jede Stage eigene Koordinaten definieren oder die alten uebernehmen?

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz