レンダリングされたシーンがあり、画面の一部でのみ行われる後処理を行っています。球を使用して領域を「カット」しますが、「完全な」球が得られますが、球の内側にあるサーフェスの「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);
ただし、これにより、完全な球を持つステンシル バッファーが生成されますが、球の内側に残っているサーフェスのみが必要です。