関数で生成できるバッファの数はglGenBuffers
? 8192 (またはそれ以上) のバッファを生成できますか?
レンダリングするバッファーは 1 つだけですが、多くのバッファーを格納する必要があります。
int i = 0;
glGetIntegerv(GL_MAX_DRAW_BUFFERS, &i);
戻ります8
。これは、同時にレンダリングするバッファの最大数です。
私は正しいですか?
このGL_MAX_DRAW_BUFFERS
値はglGenBuffers
、フラグメント シェーダーが書き込むことができるバッファーとは関係ありません (「 」を参照glDrawBuffers
)。
標準ではバッファの数に制限はありません。必要な数だけ作成できます。ただし、メモリに制限があるため、大量のデータを保存する予定がある場合、次のような呼び出しglBufferData
は失敗する可能性がありますGL_OUT_OF_MEMORY
glGenBuffers 関数で生成できるバッファの数は?
glGenBuffers はストレージを割り当てず、バッファの名前/ID を取得するだけです。この制限は純粋に実装固有ですが、理論的には、使用可能なメモリと管理構造のサイズによってのみ左右されます。はるかに制限的な要因は、割り当てるバッファー ストレージの量です。
もちろん、問題は次のとおりです。なぜそんなに多くのバッファーが必要なのですか? そして、なぜあなたは Pixes Buffer Objects や Color Buffer Attachments なのですか? テクスチャはデータのストレージ オブジェクトにより適していませんか?
8 を返します。これは、同時にレンダリングするバッファの最大数です。
はい、これはマルチ ターゲット レンダリングにおけるターゲット バッファーの最大数です。