Sollte ich jemals ein `vec3` innerhalb eines einheitlichen Puffer- oder Shader-Speicherpufferobjekts verwenden?

Dasvec3 type ist ein sehr netter Typ. Es nimmt nur 3 Floats auf, und ich habe Daten, die nur 3 Floats benötigen. Und ich möchte eine in einer Struktur in einem UBO und / oder SSBO verwenden:

layout(std140) uniform UBO
{
  vec4 data1;
  vec3 data2;
  float data3;
};

layout(std430) buffer SSBO
{
  vec4 data1;
  vec3 data2;
  float data3;
};

Dann kann ich in meinem C- oder C ++ - Code auf diese Weise übereinstimmende Datenstrukturen erstellen:

struct UBO
{
  vector4 data1;
  vector3 data2;
  float data3;
};

struct SSBO
{
  vector4 data1;
  vector3 data2;
  float data3;
};

Ist das eine gute Idee?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage