- ·上一篇文章:C++中CArchive类介绍
- ·下一篇文章:C语言内存处理函数
结构成员对齐与序列化
rmal_y, normal_z;
float u, v;
DeviceBitmap* bitmap;
Material* material;
float temp_val;
!
float u, v;
DeviceBitmap* bitmap;
Material* material;
float temp_val;
static const int FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1;
};
这是一个自定义顶点结构,它的最大成员字节数为 4,所有的成员也都是 4 字节边界,不论作何选项,始终保持紧凑存储,若其中一个成员扩展为 8 字节,那么伴随着选项的更改,VertexXYZ_N_T1 要求的对齐边界可导致部分空洞,从而同硬件所需的顶点缓存数据布局存在出入,我不追究硬件是否使用 double 值,但是现在就应当使用
#pragma pack(push, 4)
...
#pragma pack(pop)
加以限定。
我还定义了 Matrix, Material, Vector3, Colorf 等类型,如果要使得这些数据同 D3D, D3DX 的相应类型在内存上兼容的,也是需要限定的。
!
结构成员对齐与序列化