私はopenglを初めて使いました。単純なケースではステンシルバッファを動作させるのに苦労しています。 私は2つのテクスチャを持っています.1つはビットマップで、もう1つは「マスク」で、ビットマップからいくつかの部分を隠そうとしています。OpenTKステンシルバッファ
GL.TexImage2Dを使用してステンシルテクスチャを作成する際にステンシルフォーマットを設定しようとすると、この機能が動作しないようですが、無効な列挙型を取得し、フレームバッファーテクスチャ2Dにstencilextensionをアタッチしようとすると私は(テクスチャを使用してテクスチャをマスキング)シンプルな2Dの場合のためにこれを示す任意の例を見つけることができないよう
GL.Enable(EnableCap.StencilTest);
GL.ClearStencil(0);
GL.StencilMask(0xFFFFFFFF); // read&write
// Create stencil texture
GL.GenTextures(1, out stencilTexture);
GL.BindTexture(TextureTarget.Texture2D, stencilTexture);
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba8, stencilTextureWidth, stencilTextureHeight, 0, OpenTK.Graphics.OpenGL.PixelFormat.Rgba, PixelType.UnsignedByte, IntPtr.Zero);
//DOES NOT WORK: GL.TexImage2D(TextureTarget.Texture2D, 0, (PixelInternalFormat)All.StencilIndex, stencilTextureWidth, stencilTextureHeight, 0, OpenTK.Graphics.OpenGL.PixelFormat.StencilIndex, PixelType.UnsignedByte, IntPtr.Zero);
CREATE COLORTEXTURE FROM BITMAP
// Create a FBO and attach the stencil texture
GL.Ext.GenFramebuffers(1, out fbo);
GL.Ext.BindFramebuffer(FramebufferTarget.FramebufferExt, fbo);
GL.Ext.FramebufferTexture2D(FramebufferTarget.FramebufferExt, FramebufferAttachment.ColorAttachment0Ext, TextureTarget.Texture2D, stencilTexture, 0);
//DOES NOT WORK?: GL.Ext.FramebufferTexture2D(FramebufferTarget.FramebufferExt, FramebufferAttachment.StencilAttachmentExt, TextureTarget.Texture2D, stencilTexture, 0);
DRAW SOME STUFF INTO THE STENCILTEXTURE TO FUNCTION AS A MASK
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.StencilBufferBit);
DRAW COLOR TEXTURE
GL.Enable(EnableCap.StencilTest);
GL.ClearStencil(0);
GL.ColorMask(false, false, false, false);
GL.StencilFunc(StencilFunction.Always, 1, 1);
GL.StencilOp(StencilOp.Keep, StencilOp.Keep, StencilOp.Replace);
DRAW THE STENCIL TEXTURE
GL.Disable(EnableCap.StencilTest);
:私は私のマスクを描くFBO。
編集:ここ 更新版:http://pastebin.com/iuur2UTM
これはひどいコードです。問題をより具体的にすることはできますか? –
申し訳ありませんが、問題がどこにあるのかわからないため、サンプルが完全に提供されています...オリジナルの投稿を編集して関連する部分のみを挿入し、コンパイルする完全なソースコードをリンクしました。 – Martijnh
なぜ彼はたくさんのコードを提供したのでしょうか?ここで多くの質問を読んだら、人々が質問に時間と努力を払い、自分が持っているものを提供していることを知っておきましょう。適切な答えを見つける。私はいつも "あなたの描画方法を投稿してください"などのように読むコメントを追加することが嫌いこれはdefintely downvotingの価値がある質問ではありません。 – dowhilefor