D3D_FVF 自由顶点格式宏的意思以及对应的c++数据类型,和自由顶点结构体的顺序
在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 为什么不考虑字节对齐