我正在尝试使用嵌套结构来模拟 GLSL 中的多态性之类的东西。
struct Primitve{
Sphere s;
Plane p;
Triangle t;
int type;
};
整数类型指定了这个原语的真正含义。通过这种方式,我可以将所有原语放在一个数组中。一个缺点是内存的浪费。
所以我的问题是关于“打包”布局类型。当我使用这种类型创建着色器存储缓冲区时
layout(packed) buffer PrimitiveBuffer{
Primitive primitives[];
};
是否会通过不为根本不使用的成员分配数据来优化此数据块?Wiki 对打包布局说:“此外,如果实现发现块的成员不影响着色器的结果,则可以对其进行优化。”
我是正确的还是由于对齐限制而仅涉及划桨?