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