7

シェーダーで実際の名前を使用してユニフォームを設定できるようにしたい

myProgram.uniform3fv("uniformVector", 0.0f, 0.1f, 1.0f);

何らかの形式の地図で場所をキャッシュする必要がありますか?

std::map<std::string, unsigned int> // or unordered_map 

または、OpenGL(デスクトップ上)はとにかくこれをキャッシュするので、パフォーマンスの違いはありませんか?

4

1 に答える 1

6

OpenGL仕様は、パフォーマンスではなく機能を定義します。したがって、特定のOpenGL実装がアクティブなユニフォームのリストをどのように保存するか、またはパフォーマンスglGetUniformLocationと比較してどれだけ高速になるかを知る方法はありません。std::map

本当に、それはあなた次第です。一貫性のある既知のパフォーマンスが必要な場合は、自分で行ってください。OpenGL実装の気まぐれにチャンスをつかみたい場合は、いつでもクエリを実行してください。個人的には、名前を付けて場所を指定します。そうすれば、最大のパフォーマンスが得られます。

于 2013-02-06T09:11:45.870 に答える