Z-Buffer Problem
-
Hi,
ich beschäftige mich noch nicht sehr lange mit Direct3D9 und habe nun ein kleines Problem mit dem Z- bzw. W-Buffer.
Das sind erstmal die Parameter/RenderstatesD3DPParams.EnableAutoDepthStencil = TRUE; D3DPParams.AutoDepthStencilFormat = D3DFMT_D16;lpD3DDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_USEW); lpD3DDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);Folgendes tritt auf: Ist der Z-Buffer ausgeschaltet, so werden (wie gewünscht) 2 identsiche Vierecke gerendert, das zweite nur etwas auf der Y-Achse verschoben.
Schalte ich den Buffer nun ein, so passiert unterschiedliches. Mal werden die Vierecke gerendert, wenn ich mich jedoch etwas im Raum bewege, so treten Streifen auf, bewege ich mich ein grösseres Stück, wird nichts mehr gerendert. Es kann aber auch passieren, dass von anfang an nichts gerendert wird und nur der Hintergrund zu sehen ist.
Mein Problem ist nun, dass ich keine Ahnung habe, wo ich nach dem Fehler suchen soll.
Ich hoffe, das war einigermassen verständlich und es weiss jemand Rat.
(Da ich noch auf eine triviale Lösung hoffe, poste ich erstmal keine grösseren Code-Ausschnitte :>)
mfg, rimmon
-
Du musst den Depthbuffer vor jedem neuen Rendergang auch wieder leeren =), ansonsten stehen da noch die Daten von vorher drinne.
-
Vielen Dank für den Hinweis.

Wie ich jetzt festgestellt habe, hatte ich bei der Clear-Funktion das D3DCLEAR_ZBUFFER aussen vorgelassen. (dachte, das Clear würde alles beinhalten)