|
DirectX-Forum - Beitragsübersicht - |
|
Thema | DX8: 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 ] |
|
Letzte Aktualisierung: Sonntag, 13. Dezember 2015 |
|