我有一堂课是这样的:
class myType
{
union {
float data[4];
other_vector4_type v
} ;
typedef union {
float data[4];
other_vector4_type v
} myType-internal_t;
<various member functions, operator overloads>
}
现在我想在我的顶点缓冲区中使用这种类型,但sizeof()
并不像预期的那样。我将类对齐到 16 个字节。
sizeof(myType)
产量 64。
sizeof(myType::myType-internal_t)
产量 32。
我已经阅读了很多关于数据对齐的文章,但我不知道我在哪里使用了额外的数据。我尝试剥离自定义构造函数,但它保持不变,交换 class 关键字struct
也不会改变它(我不明白它的用途,因为它发生了!)
这很烦人,我现在将使用 internal 类型,因为我不会经常接触数据,但是让课堂像我想要的那样工作会很棒。