我认为Vec3类型是一个非常合适的类型。它只占用3个浮点数,而我的数据只需要3个浮点数。我想在UBO或SSBO的结构中这样使用:
layout(std140) uniform UBO
{
vec4 data1;
vec3 data2;
float data3;
};
layout(std430) buffer SSBO
{
vec4 data1;
vec3 data2;
float data3;
};
然后,在我的C/C++代码中,我可以这样做来创建与GLSL中匹配的数据结构:
struct UBO
{
vector4 data1;
vector3 data2;
float data3;
};
struct SSBO
{
vector4 data1;
vector3 data2;
float data3;
};
这样是不是一个比较好的方案?