当前位置:K88软件开发文章中心编程语言C/C++C/C++01 → 文章内容

结构成员对齐与序列化

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2019-1-3 0:06:59

rmal_y, normal_z;
        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 的相应类型在内存上兼容的,也是需要限定的。


上一页  [1] [2] 


结构成员对齐与序列化