合計5つのレンダーターゲットがあります。同じシェーダーを使用して最初の4に書き込み、次に別のパスで最後のシェーダーに書き込みます。
最初の4つのターゲットにレンダリングを呼び出す前に、次のように呼び出します。
GLenum drawBuffers[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3};
glDrawBuffers(4, drawBuffers);
しかし、2番目のパスを呼び出して、最後のパスである5番目のターゲットにのみ書き込みたい場合、次のように奇妙な結果が得られるのはなぜですか?
GLenum drawBuffers[] = { GL_COLOR_ATTACHMENT4 };
glDrawBuffers(1, drawBuffers);
代わりに使用する必要があるのはなぜですか。
GLenum drawBuffers[] = { GL_NONE, GL_NONE, GL_NONE, GL_NONE, GL_COLOR_ATTACHMENT4 };
glDrawBuffers(5, drawBuffers);
これは単にglDrawBuffers()がどのように機能するのか、それとも他の何かによって引き起こされているのでしょうか?
編集:Jarrodsコメントに関する修正されたコード