DirectX-Forum - Beitragsübersicht -
ThemaDX8: Problem mit Richtung des Lichts bei mehreren Render-Fenstern
Von Sven
E-Mail watteman@gmx.de
Datum 23. Februar 2009 um 13:09:26
Frage Hallo zusammen,

ich habe eine Frage zur Lichteinstellung bei DX8. Und zwar habe ich im Fenster-Modus 4 gleichgroße Fenster in die verschiedene Dinge gerendert werden. Es gibt dabei 2 Kameras(Cam_R, Cam_K), die sich getrennt bewegen lassen. Je nachdem, was für das jeweilige Fenster eingestellt ist, wird eine der beiden Kameras verwendet. Dabei soll das Licht aus der Richtung der entsprechenden Kamera kommen. Der folgende Code wird von einem Timer regelmäßig aufgerufen:
 For i = 0 To 3 'Index des zu renderenden Fensters

D3DDev.Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, 0, 1, 0
D3DDev.BeginScene

D3DDev.SetTransform D3DTS_WORLD, MatWorld

D3DDev.LightEnable 0, 1 'Lichteinstellungen
D3DDev.SetRenderState D3DRS_LIGHTING, 0

If Wnd(i).LatticeKind = WL_REAL Then 'Hier Wahl der Kamera

D3DDev.SetTransform D3DTS_VIEW, Cam_R.MatView
D3DDev.SetTransform D3DTS_PROJECTION, Cam_R.MatProj
light.Direction = Cam_R.Direction 'setzen der Lichtrichtung

'[...]Drahtgitter-Buffer zeichnen
D3DDev.SetRenderState D3DRS_LIGHTING, 1
'[...]Textur-Buffer zeichnen

Else
D3DDev.SetTransform D3DTS_VIEW, Cam_K.MatView
D3DDev.SetTransform D3DTS_PROJECTION, Cam_K.MatProj
light.Direction = Cam_K.Direction 'setzen der Lichtrichtung

'[...]Drahtgitter-Buffer zeichnen
D3DDev.SetRenderState D3DRS_LIGHTING, 1
'[...]Textur-Buffer zeichnen
End If

D3DDev.EndScene
D3DDev.Present ByVal 0, ByVal 0, Wnd(i).hWnd, ByVal 0

Next i
Die Fenster werden korrekt gerendert, nur das Licht besitzt in allen Fenstern die Richtung, die es im letzten haben sollte. Irgendwie muss es nachträglich überschrieben werden. Kann mir jemand erklären, wie das sein kann? Es wird doch jedes Fenster explizit mit End Scene abgeschlossen...

MfG
Sven
Antwort:
Von mdx
E-Mail mdx@vb-fun.de
Datum 23. Februar 2009 um 20:02:23
Antwort Mh...
vielleicht liegt es an der Art wie du das Licht erstellst.
Wenn du dem Licht eine neue Richtung gibst, dann musst du es mit setlight auch neu
zuweisen und aktivieren.
  light.direction = New.direction
gD3dDevice->SetLight( 0, light );
gD3dDevice->LightEnable( 0, TRUE );
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ]
Antworten
DX8: Problem mit Richtung des Lichts bei mehreren Render-Fenstern - Sven 23. Februar 2009 um 13:09:26
Re: Problem mit Richtung des Lichts bei mehreren Render - mdx 23. Februar 2009 um 20:02:23
Danke! - Sven 23. Februar 2009 um 22:08:57

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  DirectX 8
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum DirectX-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | .Net-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015