1

glBegin/glEnd を使用する場合、1 回のドローコールに相当しますか?

つまり、glDrawArrays を使用する場合、私が理解しているように、データが GPU (クライアント側からサーバー側) に転送されるポイントです。glBegin/glEnd を使用する場合、データは glEnd 呼び出しでのみ GPU に転送されますか? または、頂点は glVertex/glNormal/glTexCoord 呼び出しごとに 1 つずつ転送されますか?

4

1 に答える 1

5

これらがどのように機能するかは、実装に依存します。少なくとも、glVertex/を呼び出すまで GPU には何も転送されないことがわかりますglVertexAttrib(0)。これは、それらが頂点を引き起こす (つまり、属性の状態が送信される) ためです。頂点データが、呼び出し元の関数を呼び出すとすぐに転送されるか、バッファリングされて転送されるか、glEndまたはそれ以降に転送されるかどうかは、完全に実装に依存します。

また...気にする必要はありません。即時モードを使用している場合は、パフォーマンスを気にしないためです。気にするなら、即時モードではなく、バッファ オブジェクトと最新のレンダリング機能を使用することになります。

于 2013-08-24T15:41:18.310 に答える