4

遅延レンダラーで使用するテクスチャにステンシル バッファを入れようとしています。

他のカラーと深度のアタッチメントを取得してglFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textures[color1], 0);いますが、結果は正しいです。 ステンシル バッファーを使用しない正しいレンダリング

しかし、ステンシル バッファをテクスチャにアタッチしようとすると glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT ,GL_TEXTURE_2D, textures[stencil], 0);、FBO がバッファをクリアしていないかのように、文字化けした結果が得られます。

正しくない、文字化けしたレンダリング

何が問題なのかわからない。私の疑いは、ステンシル テクスチャの設定に問題があるということです...

//Stencil Texture Initialization

glBindTexture(GL_TEXTURE_2D, textures[stencil]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

glTexImage2D( GL_TEXTURE_2D, 0, GL_STENCIL_INDEX8, 512, 512, 0, GL_STENCIL_INDEX, GL_BYTE, 0);

セットアップでエラー コードが表示されないため、問題が何であるかがわかりません。

編集:多分私はこれを正しくやっていません。ステンシル バッファをテクスチャに書き込む方法を知っている人がいれば、別のコードを記述してもかまいません。機能する方法が必要です。

4

1 に答える 1

7
GL_STENCIL_INDEX8

これは絶対に使用しないでください。ステンシル ビットが必要な場合は、 のようなパックされた深度/ステンシル イメージを常に使用してGL_DEPTH24_STENCIL8ください。GL_DEPTH_STENCIL_ATTACHMENTこれをポイントに添付する必要があります。

于 2012-11-01T05:16:20.253 に答える