D3D_FVF 自由顶点格式宏的意思以及对应的c++数据类型,和自由顶点结构体的顺序

TimeLeader 2011-06-07 07:53:50
在Direct中可以自由顶点格式来描述一个顶点的属性可能包括(位置,颜色,大小,光照,纹理)等
以下是我在d3d9types.g文件中line640-line673中复制的关于顶点格式的宏
// Flexible vertex format bits
//
#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

针对以上我提出以下问题

1 每个宏表示的含义
2 如果用 struct VertexType
{
...
}
来描述我们定义的自由顶点的格式的话,里面的数据是不是有顺序,顺序是什么(比如 第一个是顶点位置,第二个是 颜色),以及允许的数据类型
3 在使用VectexBuffer的时候,为什么要传入FVF格式,setFVF对于在buffer中得到一块内存起到什么作用。
4 为什么不考虑字节对齐
...全文
254 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
IONPhantom 2011-06-08
  • 打赏
  • 举报
回复
Reference for Direct3D 9->Direct3D Reference->Direct3D Constants->D3DFVF

要是自己不会看SDK干脆就当程序员,不是什么东西都能伸手就能拿到的
IONPhantom 2011-06-07
  • 打赏
  • 举报
回复
1.定义在 SDK 里说的很明白啊
2.定义了 D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX0
或者 D3DFVF_XYZ|D3DFVF_TEX0|D3DFVF_NORMAL 那么你顶点中的数据项都是前3个float就是 position 然后3个float是 normal 最后2个 float 是纹理坐标
这个顺序是固定的,具体在 SDK 上有说明

3/4.不仅有顺序而且每一个数据项的大小都是固定的
TimeLeader 2011-06-07
  • 打赏
  • 举报
回复

1 其实我想要汉语解释,不想看sdk的英语
2 我在sdk上怎么没有找到具体的顺序,如果有请告诉我在sdk的什么目录下,或者查什么关键词能找到
3 并没有解释setFVF起的作用,请深入解释

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧