DX中深度缓存和投影变换的问题
在绘制过程中,如果Clear函数把后台缓存的深度值设为1,而在透视投影时把近裁截面得距离也设为1,远裁截面的距离设为1000,那绘制的对象的深度值d在(1,1000)中,如果把深度测试函数设为D3DCMP_LESS,岂不是对象的深度值永远大于后台缓存的深度值,后台缓存的深度值就不能更新了?
[解决办法]
clear设置的1, 和设置裁减面的1, 完全是2个不同的概念
clear设置1,只把深度缓存清理一遍,缓存当中所有点的初始值都设置为了1
裁减的near和far面,定义出的是世界坐标系下的可视区域,投影矩阵把这个区域内的点变换到投影空间, 这个变换后的z才用来和clear里面设置的数值作比较的
投影后的z范围, 不总是0到1的
比如,把0到0.1 设置成前景, 0.1-0.9设置成中景, 0.9到1设置成背景