Android用のopengl-esのステンシルバッファを使用して、画面の描画部分をマスクアウトしようとしています。正しく設定されていると思いますが、ステンシル以外の部分をマスクしているわけではありません。以下は、私が行っていることのコードの抜粋です。
gl.glEnable(GL10.GL_STENCIL_TEST);
gl.glClearStencil(0);
gl.glClear(GL10.GL_STENCIL_BUFFER_BIT);
gl.glColorMask(false, false, false, false);
gl.glDepthMask(false);
gl.glStencilFunc(GL10.GL_ALWAYS, 1, 1);
gl.glStencilOp(GL10.GL_REPLACE, GL10.GL_REPLACE, GL10.GL_REPLACE);
drawMask(); //I have confirmed this draws to the correct location by allowing colour to show. Trust that this draws the mask to the correct location.
gl.glColorMask(true, true, true, true);
gl.glDepthMask(true);
gl.glStencilFunc(GL10.GL_EQUAL, 1, 1);
gl.glStencilOp(GL10.GL_KEEP, GL10.GL_KEEP, GL10.GL_KEEP);
drawItems(); //Draw everything. Only items inside the masked area should be drawn. But everything is drawn with this code...
gl.glDisable(GL10.GL_STENCIL_TEST);
誰かがこれに何か問題を見つけましたか?基本的には、画面の半分(カラーを有効にした場合に機能します)のボックスを描画し、その領域のステンシルバッファを1に設定します。そして最後に、画面全体に描画します。上半分だけに描きたいのですが、すべてを描きます。
前もって感謝します。