2011-12-05 12 views
3

OpenGLでFBOのステンシルバッファを使用しようとしましたが、動作させることができません。深さとステンシルの両方のターゲットについて、FBOにdepth24_stencil8テクスチャをバインドしました。簡単なテストとして、私が試した:私はGL_NEVERを使用したようOpenGL、FBOのステンシルバッファが機能していませんか?

/* Enable FBO */ 

glEnable(GL_STENCIL_TEST); 
glStencilFunc(GL_NEVER, 1, 0xff); 
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); 

glBegin(GL_TRIANGLE); 
/* Draw some triangles */ 
glEnd(); 

glDisable(GL_STENCIL_TEST); 

/* Disable FBO and render it on screen as a texture. */ 

を、何もすべてでレンダリングされるべきではないが、私は三角形を見ることができます。これはステンシルがまったくないようなものですが、私は理由を理解できません。 FBOなしでこのコードを試してみるので、私はステンシル関数を正しく使うと思います。私はこの問題を解決する方法を知りません。 FBOでステンシルを使用している人は誰ですか?

+5

FBOの作成方法に関するコードを表示する必要がありますか? – zerm

+0

私のポストを見てくれてありがとう、問題は今解決されました。 – neodelphi

+1

ステンシルバッファにどのようなフォーマットを使用したかを尋ねることはできますが、フレームバッファのステンシルバッファレンダリングを正しく機能させることはできません。 –

答えて

0

私の悪いことに、FBOにステンシルバッファを正しく取り付けることができませんでした。奇妙なことは、私のfboのステータスがエラーや悪い添付ファイルを示していなかったので、私はそれがOKだったと説得された...この問題は私を夢中にさせたが、今はうまくいくようだ。

+2

FBOが完了するためにステンシルバッファ(深度バッファも不要)が必要ないため、おそらくFBOステータスはOK(完了)でした。この場合、ステンシル(深度)テストは実行されません。 –

+0

あなた自身の解決策/問題を解決するようにフラグを立てることができます。誰かが同様の問題を探すとき、この問題には解決策が含まれていることがわかります。 – tbalazs

+0

私は2日間待たなければなりません、今はクリックできません。私はそれをできるだけ早く解決されたものとしてマークします。 – neodelphi