D3D的矩阵变换

“物体坐标->世界坐标->视坐标->投影坐标->屏幕坐标”这部分的说明已经不能再多了,但是有些细节其实D3D的文档中也比较难发现出来,还有些在文档中的解释可能会让人比较迷惑。

1。视矩阵是什么?
参见“D3D的视矩阵是如何构造的”。

2。投影矩阵把Z投影到哪里去了?
我们在3D图形学中学的投影矩阵是给出一个平面,将3D空间中的图像都投影到这个平面上,这个平面一般选取Z=D这样的平面,所以构造出来的矩阵将所有的三维坐标的Z都设置为了D。但是这样就没有办法进行Z测试了。所以,D3D中选择了一个矩阵将在近远平面间的向量的Z/W值转换到0-1之间。注意这里的Z/W,投影矩阵并没有把Z直接转换到0-1之间,最后的Z比较需要齐次除法才行。既然投影到0到1之间,就没有“投影到哪个平面去”的问题了。

3。雾运算公式中的近远距离到底是到哪里的?
D3D的文档中说FOG_NEAR和FOG_FAR是到观察点的距离,观察点这个词怎么理解呢。
实际上,FOG的这个观察点不是我们的眼睛位置,而是指的投影齐次三维空间的Z=0平面。
D3D的文档中Fog节的Note中说“需要一个符合规定的投影矩阵”这段不太清楚,其实说明白就是说雾是根据应用完投影矩阵后的Z,而没进行齐次化之前的值来计算Fog参数的。

4。什么时候进行齐次除法?
D3D的文档中的Viewports and Clipping介绍屏幕坐标变换的时候明确的告诉我们:在进行完屏幕坐标变换后,坐标还是齐次的,也就是还没进行齐次除法呢。进行齐次除法之后马上就是光栅化了。

5。进行Z测试的值是透视变换之后的Z值么?
不是,是Z/W,而且,最后进行PS操作后才会修改ZBuffer(典型根据就是AlphaTest),所以那个时候早就进行完齐次除法了。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值