2020.2.19
在绘制平面阴影的时候,图形调试器中显示【像素着色器对象:未运行阶段,没有输出】。与示例代码对比调试发现,示例中模板缓冲区值为0或1,而我的程序里只有0。最后通过修改XMMatrixShadow里面平面的坐标,使它比实际平面高出一个单位,成功解决画出阴影。猜测可能是因为阴影低于地板,深度测试没有通过,导致模板缓冲区没有标记好阴影区域导致的。
而且
void OMSetDepthStencilState(
ID3D10DepthStencilState *pDepthStencilState,
UINT StencilRef
);
里面这个StencilRef参数也是关键,要设置为0才可以,1的话也会测试不通过。MSDN文档(https://docs.microsoft.com/en-gb/windows/win32/api/d3d10/nf-d3d10-id3d10device-omsetdepthstencilstate?redirectedfrom=MSDN#syntax)中说这个参数是模板测试时的参考/控制值(没太明白,蹲一个解答)
2020.2.22
在画实例化对象的时候,实例设置的世界坐标缓冲区,类型一定要设置为: