4

関数で生成できるバッファの数はglGenBuffers? 8192 (またはそれ以上) のバッファを生成できますか?

レンダリングするバッファーは 1 つだけですが、多くのバッファーを格納する必要があります。

int i = 0;
glGetIntegerv(GL_MAX_DRAW_BUFFERS, &i);

戻ります8。これは、同時にレンダリングするバッファの最大数です。

私は正しいですか?

4

2 に答える 2

5

このGL_MAX_DRAW_BUFFERS値はglGenBuffers、フラグメント シェーダーが書き込むことができるバッファーとは関係ありません (「 」を参照glDrawBuffers)。

標準ではバッファの数に制限はありません。必要な数だけ作成できます。ただし、メモリに制限があるため、大量のデータを保存する予定がある場合、次のような呼び出しglBufferDataは失敗する可能性がありますGL_OUT_OF_MEMORY

于 2012-05-09T08:54:02.923 に答える
2

glGenBuffers 関数で生成できるバッファの数は?

glGenBuffers はストレージを割り当てず、バッファの名前/ID を取得するだけです。この制限は純粋に実装固有ですが、理論的には、使用可能なメモリと管理構造のサイズによってのみ左右されます。はるかに制限的な要因は、割り当てるバッファー ストレージの量です。

もちろん、問題は次のとおりです。なぜそんなに多くのバッファーが必要なのですか? そして、なぜあなたは Pixes Buffer Objects や Color Buffer Attachments なのですか? テクスチャはデータのストレージ オブジェクトにより適していませんか?

8 を返します。これは、同時にレンダリングするバッファの最大数です。

はい、これはマルチ ターゲット レンダリングにおけるターゲット バッファーの最大数です。

于 2012-05-09T08:53:20.667 に答える