今天,做了个实验得知,在顶点结构体中没有RHW时,Direct3D将执行视、投影、世界等变换以及进行光线计算,之后你才能在窗口中得到你所绘制的物体。当顶点结构体中有RHW时,就像上面那段英文所述,告知Direct3D使用的顶点已经在屏幕坐标系中了,不再执行视图、投影、世界等变换和光线计算,因为D3DFVF_XYZRHW标志告诉它顶点已经经过了这些处理,并直接将顶点进行光栅操作,任何用SetTransform进行的转换都对其无效。不过这时的原点就在客户区的左上角了,其中x向右为正,y向下为正,而z的意义已经变为z-buffer的象素深度。
值得注意的是,D3DFVF_XYZRHW和D3DFVF_XYZ、D3DFVF_NORMAL不能共存,因为后两个标志与前一个矛盾。在使用这种顶点时,系统需要顶点的位置已经经过变换了,也就是说x、y必须在屏幕坐标系中,z必须是z-buffer中的象素深度,取值范围:0.0-1.0,离观察者最近的地方为0.0,观察范围内最远可见的地方为1.0。(不过我测试的时候似乎z值不起作用。)
D3DFVF_XYZ和D3DFVF_XYZRHW的区别是:
1.D3DXYZ默认的坐标系统用户区中心是 (0,0) 而rhw的左上角是 (0,0).
2.D3DXYZ默认的非光照的,而RHW默认就是高洛夫的光照模式。
- [1] RHW表示投影空间中顶点所在的齐次点(x,y,z,w)(homogeneous point)的w坐标的倒数(reciprocal)。
- rhw就是w的倒数,可以认为w是一个系数,用以将一个n次元空间扩展到n+1次元空间,这里重要的就是齐次坐标的概念,当w为1的时候,就是在齐次空间中的原n次元空间,
- 当w小于1时,其影射到n次元空间时将被放大,当w大于1时,影射到n次元空间将会被缩小...,当w等于0时,表示一个无限远点...
本文探讨了Direct3D中顶点结构体包含RHW字段的作用及其与D3DFVF_XYZ的区别。介绍了RHW在齐次坐标系统中的含义及如何影响顶点变换过程。
3958

被折叠的 条评论
为什么被折叠?



