2

レンダリングされたシーンがあり、画面の一部でのみ行われる後処理を行っています。球を使用して領域を「カット」しますが、「完全な」球が得られますが、球の内側にあるサーフェスの「AND」カットが必要になります。説明するのは少し難しいですが、次の 2 つのモックアップが役立つことを願っています。シーンが青いもので、緑の球がステンシル メッシュだとしましょう。右の写真は、結果のステンシルを示しています。

それで...どうすればこれを行うことができますか? 現時点では、次のようなことをしています。

GL.Enable(EnableCap.DepthTest);
GL.ColorMask(false, false, false, false);
GL.CullFace(CullFaceMode.Front);

GL.Enable(EnableCap.StencilTest);
GL.Clear(ClearBufferMask.StencilBufferBit);

GL.StencilFunc(StencilFunction.Always, 1, 1);
GL.StencilOp(StencilOp.Incr, StencilOp.Incr, StencilOp.Incr);

Resources.R.StencilMesh.Render();

GL.StencilFunc(StencilFunction.Equal, 1, 1);
GL.StencilOp(StencilOp.Keep, StencilOp.Keep, StencilOp.Keep);

ただし、これにより、完全な球を持つステンシル バッファーが生成されますが、球の内側に残っているサーフェスのみが必要です。

4

1 に答える 1