D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
来源:互联网 发布:人脸识别用什么算法 编辑:程序博客网 时间:2024/05/29 04:21
【ZT】D3DFVF_XYZ和D3DFVF_XYZRHW的区别:
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时,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值不起作用。)
If you use D3DFVF_XYZ, then your vertex format needs to have 3 floats in it, for x, y and z. Those are used
to define a vertex position in 3D space.If you use D3DFVF_XYZRHW, then your vertex format needs to have 4
floats in it, for x, y, z and rhw. X and Y are used to define a vertex position in 2D space, Z is ignored
(I think, it may be used for fog and such, but I don't recall just now - I always set it to 0.0f), and rhw
is the Reciprocal of Homogenous W - which is basically 1 / the depth of the vertex.
Usually, you use D3DFVF_XYZRHW for doing 2D, and D3DFVF_XYZ any other time. However, a lot of people just
use D3DFVF_XYZ, and use an orthoganal projection matrix to make it seem 2D.
以前好像没有仔细思考过,只是见到Beginning DirectX9中如是说:
The RHW value, which stands for Reciprocal of Homogeneous W[1], tells Direct3D that the vertices thatare 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时,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值不起作用。)
If you use D3DFVF_XYZ, then your vertex format needs to have 3 floats in it, for x, y and z. Those are used
to define a vertex position in 3D space.If you use D3DFVF_XYZRHW, then your vertex format needs to have 4
floats in it, for x, y, z and rhw. X and Y are used to define a vertex position in 2D space, Z is ignored
(I think, it may be used for fog and such, but I don't recall just now - I always set it to 0.0f), and rhw
is the Reciprocal of Homogenous W - which is basically 1 / the depth of the vertex.
Usually, you use D3DFVF_XYZRHW for doing 2D, and D3DFVF_XYZ any other time. However, a lot of people just
use D3DFVF_XYZ, and use an orthoganal projection matrix to make it seem 2D.
RHW值作用:当相邻顶点的RHW值相同时,看不出差别。但是,使用戈劳德着色模式,相邻顶点的颜色差值将偏向RHW值高的一边,也就是说RHW高的一边在图元渲染的过程中占据较多的比重,该颜色看见的范围也大。如果某个点的RHW值为0,则直接使用另一个顶点的颜色值。???
[1] RHW表示投影空间中顶点所在的齐次点(x,y,z,w)(homogeneous point)的w坐标的倒数(reciprocal)。RHW(Reciprocal of Homogeneous W[1])
0 0
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3D-lines(+D3DFVF_XYZ和D3DFVF_XYZRHW的区别)
- D3D-lines(+D3DFVF_XYZ和D3DFVF_XYZRHW的区别)
- D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3DFVF_XYZ 和 D3DFVF_XYZRHW 的区别。
- D3DFVF_XYZ 和 D3DFVF_XYZRHW 的区别
- D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- Utterance API
- Android实现首次点击返回键提示信息,第二次点击退出应用
- BZOJ 2525 Poi2011 Dynamite 二分答案+树形贪心
- 一项很有生命力的技术(Ajax)
- 无线报文简单分析
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- BaseDataProcessor API
- Android Studio 1.2版本设置安装配置教程(window平台)
- vs2013—未解决问题—编写简单的图片下载程序
- 设计模式C++实现(12)——备忘录模式2
- DataBlocker API
- Win字符串小结
- 《Unix编程艺术》读书笔记(1)
- DataStartSignal API