0

このAppleのドキュメント(「属性配列に定数を格納しないようにする」というヘッダーの下)を読んだところ、モデルの頂点がすべて同じ色である場合、色は頂点属性であってはならないと書かれています。「OpenGLES2.0アプリケーションは一定の頂点属性を設定できる…」とはどういう意味ですか?

私の質問は、色に均一な値を使用し、すべてのオブジェクトに対して均一な呼び出しと描画呼び出しを行う方がよいかどうかです。または、とにかく頂点属性を持ちますが、すべてを一挙に描画します。(または、それが優れている場合は、一定の頂点属性)。

基本的に、すべてを一度に描画することの利点は、複数の関数呼び出しのオーバーヘッドがないことだけですか?

その意味を理解するために、フレームごとに1000個の円を描画し、それぞれが異なる色で、40個の頂点を持っているとします。その場合、どちらが良いでしょうか?

4

1 に答える 1

3

答えは、1 回の描画呼び出しで描画するものの量によって異なります。30,000 頂点のオブジェクトがあり、それらすべてが同じ色である場合、頂点ごとの読み取りが大量に無駄になっています (カラー データによって頂点ごとのデータが大きくなると仮定しますが、そうではない可能性があります)。ただし、各クワッドが異なる色を持つクワッド レンダリングについて話している場合、均一な更新オーバーヘッドと複数の描画呼び出しがパフォーマンスを低下させます。

OpenGL でインスタンス化する方法があることに注意してください。これにより、インスタンスごとのデータと頂点ごとのデータを使用できます。しかし、これは通常、モデルに数千のインスタンスと 100 を超える頂点が存在するまで、あまり効果がありません。

あなたの特定の例では、どちらが速いかを知る方法はありません。ベンチマークする必要があります。

于 2011-09-27T21:40:43.603 に答える