これは単なる関心事ですが、GL_VERTEX_ARRAY が「保持」し、drawArrays() などを介してレンダリングする頂点の量に制限はありますか? それとも、理論的には数百万の頂点を通過しても drawArrays() を呼び出すことができるでしょうか?
2 に答える
OpenGL-1.2 以降、次の使用時に一種の制限が適用されますglDrawRangeElements
。
実装は、頂点およびインデックス データの推奨される最大量を示します。これは
GetIntegerv
、記号定数MAX_ELEMENTS_VERTICES
および を使用して呼び出すことで照会できますMAX_ELEMENTS_INDICES
。end-start+1 が の値より大きい場合、MAX_ELEMENTS_VERTICES
または count が の値より大きい場合MAX_ELEMENTS_INDICES
、呼び出しはパフォーマンスが低下して動作する可能性があります。範囲内のすべての頂点が開始する必要はありません。参照されることを終了します。ただし、実装によって未使用の頂点が部分的に処理される場合があり、最適なインデックス セットで達成できるパフォーマンスよりも低下します。
しかし、それは推奨事項であり、厳しい制約です。それ以外の真の制限は、インストールされているメモリの量であり、インデックス要素配列の選択されたタイプによって対処できるものです
ただし、glDrawRangeElements
通常の制限は、一般的なバッチ サイズの適切な指標にもなります。
確かに制限はありますが、私が知る限り、利用可能なメモリに基づいているだけなので、数百万の頂点を持つことができるかもしれません.