2012-04-10 13 views
0

私は頂点構造を定義しているとしましょう。頂点のRGBAカラーを単一の符号なし整数にパックすることで、頂点構造を小さく保つことができます。したがって:GLSLでvec4やHLSLでのfloat4:頂点が私の頂点シェーダに到着したとき4-floatカラーは4バイトカラーより高速ですか?

struct Vertex 
{ 
    float pos[3]; 
    float normal[3]; 
    float texcoord[2]; 
    unsigned int color; // RGBA 
}; 

しかし、それは、4-float値に変換されています。おそらく、このタイプの変換はGPUにある程度時間がかかります。

したがって、頂点のカラー属性を4-floatとして定義して変換を避ける方が速いでしょうか?

... 
float color[4]; 
... 

またはこの色の大きなメモリサイズは、GPUキャッシュはあまり効率的で遅くレンダリングの結果になるだろうか?

+1

試しましたか? – harold

答えて

4

最新のGPUには、ロード時にパック形式をアンパックするための専用ハードウェアが用意されているため、効率的に変換できます。メモリ帯域幅の要件と効率の良い頂点キャッシュの使用によりパフォーマンスが向上するため、すべての頂点属性を可能な限り厳密にパックする必要があります。

関連する問題