今天順利顯示靜態模型, 加上紋理后,發現ZBuffer好像有點不對勁
于是檢查D3DRS_ZENABLE,D3DRS_ZWRITEENABLE, 結果都是TRUE
無奈,只有與我以前正確的Demo對比210個渲染狀態. 有部分渲染不同的,使用硬代碼強行糾正,結果: 無效
懷疑頂點格式破損, 重新使用以前的模型格式,排除這個可能性, 結果:失敗
無奈中,檢查設備選項, 突然注意到D3DPRESENT_PARAMETERS 結構體中的EnableAutoDepthStencil 設置是FALSE
因為這次設備類是重寫的,對比以前正確代碼, 有差異,將其改為
PresentParameters.EnableAutoDepthStencil = TRUE;
PresentParameters.AutoDepthStencilFormat = D3DFMT_D16;
以前翻閱SDK時,注意過這個選項, 這是由D3D幫你管理ZBuffer.
測試, 問題解決.
分析: 如果EnableAutoDepthStencil = FALSE, 意味著連ZBuffer都沒有,那更不要說渲染狀態.
正確結果