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