iOS 5でMonoTouchを使用して深度バッファーを機能させることができません。標準のMonoTouch「OpenGLアプリケーション」テンプレートを使用しており、深度バッファー(OpenGL ES 1.1)をテストするためにこのコードを追加しました。
GL.Enable(All.DepthTest);
GL.DepthFunc(All.Greater);
GL.DepthMask(true);
// Shape A
GL.DrawArrays (All.TriangleStrip, 0, 4);
// Shape B (should be behind Shape A)
GL.Translate (.5f,.5f,.5f);
GL.DrawArrays (All.TriangleStrip, 0, 4);
// Shape C (should be in front of Shape A)
GL.Translate (-1f,-1f,-1f);
GL.DrawArrays (All.TriangleStrip, 0, 4);
形状Bと形状Cの両方が形状Aの前に描画されます。「GL.DepthFunc(All.Never)」でも同じことが起こります。デプスバッファは完全に無視されます。また、次のコードを使用して、深度バッファーを手動で作成しようとしました(MonoTouch / OpenTK "iPhoneOSGameView"に依存して作成するのではなく)。
protected override void CreateFrameBuffer()
{
base.CreateFrameBuffer();
uint depthbuffer=0;
GL.Oes.GenRenderbuffers (1, ref depthbuffer);
GL.Oes.BindFramebuffer (All.RenderbufferOes, depthbuffer);
GL.Oes.RenderbufferStorage (All.RenderbufferOes, All.DepthComponent16Oes, (int) 768, (int) 1024);
GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.DepthAttachmentOes, All.RenderbufferOes, depthbuffer);
}
それはまだ機能していません。デプスバッファを機能させる方法を知っていますか?私は何かが足りないのですか?