頂点構造を定義しているとしましょう。頂点の RGBA カラーを単一の unsigned int にパックすることで、頂点構造を小さく保つことができます。したがって:
struct Vertex
{
float pos[3];
float normal[3];
float texcoord[2];
unsigned int color; // RGBA
};
しかし、頂点が頂点シェーダーに到達すると、GLSL の vec4 または HLSL の float4 の 4 つの float 値に変換されます。おそらく、この型変換には GPU で時間がかかります。
したがって、頂点の色属性を 4-float として定義して、変換を回避する方が高速でしょうか?
...
float color[4];
...
それとも、この色のメモリ サイズが大きいと、GPU キャッシュの効率が低下し、レンダリングが遅くなりますか?