游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5715|回复: 16

晕,发现一个问题关于FVF

[复制链接]

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
发表于 2007-10-11 08:49:00 | 显示全部楼层 |阅读模式
好像D3DFVF_NORMAL一定要放在D3DFVF_TEX1的前面...不然纹理混合的时候就会出问题
不知道其他人是不是这样...起码这个破问题搞的我一个晚上没睡好

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2007-10-11 12:17:00 | 显示全部楼层

Re:晕,发现一个问题关于FVF

是的一顶要按这样的顺序。。。
#define D3DFVF_RESERVED0        0x001
#define D3DFVF_POSITION_MASK    0x400E
#define D3DFVF_XYZ              0x002
#define D3DFVF_XYZRHW           0x004
#define D3DFVF_XYZB1            0x006
#define D3DFVF_XYZB2            0x008
#define D3DFVF_XYZB3            0x00a
#define D3DFVF_XYZB4            0x00c
#define D3DFVF_XYZB5            0x00e
#define D3DFVF_XYZW             0x4002

#define D3DFVF_NORMAL           0x010
#define D3DFVF_PSIZE            0x020
#define D3DFVF_DIFFUSE          0x040
#define D3DFVF_SPECULAR         0x080

#define D3DFVF_TEXCOUNT_MASK    0xf00
#define D3DFVF_TEXCOUNT_SHIFT   8
#define D3DFVF_TEX0             0x000
#define D3DFVF_TEX1             0x100
#define D3DFVF_TEX2             0x200
#define D3DFVF_TEX3             0x300
#define D3DFVF_TEX4             0x400
#define D3DFVF_TEX5             0x500
#define D3DFVF_TEX6             0x600
#define D3DFVF_TEX7             0x700
#define D3DFVF_TEX8             0x800

#define D3DFVF_LASTBETA_UBYTE4   0x1000
#define D3DFVF_LASTBETA_D3DCOLOR 0x8000

#define D3DFVF_RESERVED2         0x6000  // 2 reserved bits

自己看下FVF的定义,再想一下就明白了,FVF没那么聪明的

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2007-10-11 15:38:00 | 显示全部楼层

Re:晕,发现一个问题关于FVF

有见地,这都被你发现了。你怎么会以为先后还有意义得呢。

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-10-11 20:28:00 | 显示全部楼层

Re:晕,发现一个问题关于FVF

因为实在查不出问题了,就改了下先后顺序...
可是还是不明白,声明用的是:
const DWORD FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX0;
这和const DWORD FVF = D3DFVF_XYZ |  D3DFVF_TEX0 | D3DFVF_NORMAL ;

得到的FVF值应该是一样啊...不就是个DWORD类型么...望详解.

0

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2007-10-11 20:52:00 | 显示全部楼层

Re:晕,发现一个问题关于FVF

是啊,是个位运算,怎么可能和位置有关呢???

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2007-10-12 00:15:00 | 显示全部楼层

Re:晕,发现一个问题关于FVF

顶点数据的内存结构可是有先后顺序的啊。

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-10-12 15:37:00 | 显示全部楼层

Re:晕,发现一个问题关于FVF

但是不管怎么样,这这两种操作得到的FVF值都是一样的
而在对内存数据操作的时候是以最终FVF的值来进行操作的啊...还是不解...
congy,可能是我没懂你

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-10-12 18:41:00 | 显示全部楼层

Re:晕,发现一个问题关于FVF

噢噢,我要补充一下,改变FVF声明顺序后我的顶点数据也改到了相对应的顺序
但是用const DWORD FVF = D3DFVF_XYZ |  D3DFVF_TEX0 | D3DFVF_NORMAL ;
没作用
用const DWORD FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX0;
才行....
求原理.

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2007-10-12 22:21:00 | 显示全部楼层

Re: Re:晕,发现一个问题关于FVF

penghao_xmu: Re:晕,发现一个问题关于FVF

噢噢,我要补充一下,改变FVF声明顺序后我的顶点数据也改到了相对应的顺序
但是用const DWORD FVF = D3DFVF_...

没什么原理,就是 d3d 的固定管线的限制。它要求硬件在固定管线下只能处理这种顺序的数据结构。

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-10-13 00:25:00 | 显示全部楼层

Re:晕,发现一个问题关于FVF

...那也只能先接受用了...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 12:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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