D3D RHW的理解


RHW(Reciprocal of Homogeneous W[1])

英文原文意思:

The RHW value, which stands for Reciprocal of Homogeneous W[1], tells Direct3D that the vertices that

are being used are already in screen coordinates. This value is normally used in fog and clipping

calculations and should be set to 1.0.

中文翻译:

RHW值代表了某个顶点(x,y,z,w)的齐次点的W的倒数它告诉Direct3D,顶点正在使用已经在屏幕坐标。 这个值通常用在雾和裁剪中
计算,应该设置为1.0

什么是齐次坐标?

(1)从普通坐标转换成齐次坐标时

   如果(x,y,z)是个点,则变为(x,y,z,1);

   如果(x,y,z)是个向量,则变为(x,y,z,0)

(2)从齐次坐标转换成普通坐标时   

   如果是(x,y,z,1),则知道它是个点,变成(x,y,z);

   如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)


齐次坐标完整解释

这怎么理解呢?

1.在顶点结构体中不使用RHW时,D3D将执行视图、投影、世界等变换以及进行光线计算,之后你才能在窗口中得到你所绘制的物体。
用代码的语言描述:
D3DXMatrixLookAtLH          视图
D3DXMatrixPerspectiveFovLH  投影
LPDIRECT3DDEVICE9->SetTransform  世界
LPDIRECT3DDEVICE9->SetRenderState(D3DRS_LIGHTING,true);  光线,具体是不是执行光线计算是这种代码还待研究



2.当顶点结构体中使用RHW时,就像上面那段英文所述,告知Direct3D使用的顶点已经在屏幕坐标系中了,不再执行视图、投影、世界等变换和光线计算
因为D3DFVF_XYZRHW标志告诉它顶点已经经过了这些处理,并直接将顶点进行光栅操作,任何用SetTransform进行的转换都对其无效。(说白了就是直接告诉D3D直接使用我给你的坐标绘制)

不过这时的原点就在客户区的左上角了,其中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值不起作用。)


RHW值作用:
当相邻顶点的RHW值相同时,看不出差别。但是,使用戈劳德着色模式,相邻顶点的颜色差值将偏向RHW值高的一边,也就是说RHW高的一边在图元渲染的过程中占据较多的比重,该颜色看见的范围也大。如果某个点的RHW值为0,则直接使用另一个顶点的颜色值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值