游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4952|回复: 9

请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

[复制链接]

3

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-8-26 22:14:00 | 显示全部楼层 |阅读模式
请问两者的区别,再什么情况下用那个?
谢谢指教。。。。

20

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2004-8-27 10:05:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

D3DFVF_XYZRHW 会包含Matrix 的信息,
改变Custom_Vertex 内的rhw好象是用来扭曲纹理的…

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-8-27 19:46:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

xyz指的是未经过T&L过程的顶点,也就是所以的世界坐标,而xyzrhw是已经经过了T&L过程的顶点,也就是说已经是经过裁减的屏幕坐标了。

20

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2004-8-27 20:05:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

同意楼上的说法,我不建议使用这个方法。
假如把X、Y轴设定为负数,
便不能显示。

至于我所说的扭曲,
我也不太清楚是什么原理,
我只是在别人的程序代码改一改rhw值,
看看有什么结果,
大家可以看看以下生产Custom_Vertex数组的程序代码…

CUSTOMVERTEX vertices[] =
    {
                //     x,      y,    z,  rhw, color
        { 100.0f, 100.0f, 0.0f, 0.5f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 0.0f,0.0f,},
        { 420.0f, 100.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 1.0f,0.0f,},
        { 100.0f, 340.0f, 0.0f, 0.5f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 0.0f,1.0f,},
        { 420.0f, 340.0f, 0.0f, 0.5f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 1.0f,1.0f,},
    };

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-8-28 11:59:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

楼上的给个这种代码没什么用啊?

而william9527的意思是说:rhw是投影在屏幕上的二维坐标?
而xyz,是一个本地坐标吧?这个本地坐标应该要经过一次转换才成为世界坐标吧?

78

主题

194

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2004-8-28 16:12:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

rhw就是w的倒数,所有的顶点在处理时,都会除以w,通常w都使用1作为默认值,我也只知道这么多了,不知是不是和齐次坐标有关系,我也不大清楚,因为不清楚不能乱说,所以就说这么多了 ^_^b.好像还有什么wbuffer的概念

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-8-28 18:18:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

哇!!不知道的太多了!

20

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2004-8-28 19:31:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

原来是这个意思吗?我也不知道…

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-8-28 21:04:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

   rhw就是w的倒数,可以认为w是一个系数,用以将一个n次元空间扩展到n+1次元空间,这里重要的就是齐次坐标的概念,当w为1的时候,就是在齐次空间中的原n次元空间,当w小于1时,其影射到n次元空间时将被放大,当w大于1时,影射到n次元空间将会被缩小...,当w等于0时,表示一个无限远点...

         我还以为只有学好基本几何概念和线性代数才有资格学CG,看来我错了...

   

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-8-29 21:55:00 | 显示全部楼层

Re:请问D3D自由顶点里的D3DFVF_XYZ和D3DFVF_XYZRHW有何区别??

这个问题很基本哦~
见我在http://bbs.gameres.com/showthread.asp?threadid=11773贴中的解释。归结一点,就是x,y要从屏幕坐标变换到投影空间坐标(通过视口和rhw值),z值直接写入Z-buffer,rhw作为齐次坐标只作用于纹理坐标和高洛德着色的透视矫正。
另外,作为FFP(Fixed Function Pipeline)的顶点对象(D3DFVF都是同时包含数据声明与处理方法),XYZRHW忽略几何变换与光照计算,而XYZ则不会忽略。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-18 00:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表