6

2 つのプログラムで頂点属性の位置を同じ値にバインドするとします。これら 2 つのプログラムで同じ頂点配列オブジェクトを使用して描画するのは正しいですか?

4

2 に答える 2

1

「正しい」を定義します。

2 つのプログラム オブジェクトが互換性のある属性の場所を使用する場合、それらは同じ属性の場所を使用します。VAO は属性の場所に基づいて機能するため、ある VAO で機能する VAO は別の場所でも機能します。したがって、これは機能します。

一般に、これを実際に利用するかどうかはパフォーマンスの問題です。一般に、頂点配列の状態を変更しないことをお勧めしますが、これが他の状態の変更に比べてどれほど重要かは明らかではありません。とにかくプログラムを変更しているので、プログラムを変更するときに VAO を変更しなくても、最悪の場合は速度が遅くならず、パフォーマンスが大幅に向上する可能性があります。

ただし、頂点配列の状態の変化を最小限に抑えるためにどの程度の作業を行う必要があるかは明確ではありません。モデルを同じ形式で同じバッファ オブジェクトにパックできる場合は、glDrawArraysや などの関数を使用して、VAO を変更せずにすべてのモデルをレンダリングできますglDrawElementsBaseVertex

于 2012-11-08T19:09:28.987 に答える