今天顺利显示静态模型, 加上纹理后,发现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都没有,那更不要说渲染状态.
正确结果