I want to mask a small triangle in a bigger rectangle using openGL ES stencil buffer.
use stencil buffer to draw small triangle
GLES20.glEnable(GLES20.GL_STENCIL_TEST);
GLES20.glStencilFunc(GLES20.GL_ALWAYS, 0x1, 0x1);
GLES20.glStencilOp(GLES20.GL_REPLACE, GLES20.GL_REPLACE, GLES20.GL_REPLACE);
GLES20.glColorMask(false, false, false, false);
GLES20.glDepthMask(false);
GLES20.glUseProgram(FragmentHandle);
GLES20.glVertexAttribPointer(0, 3, GLES20.GL_FLOAT, false, 0,floatBuffer);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttrib4f(1, 0.0f, 1.0f, 0.0f, 1.0f);
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
Draw a Full Screen Rectangle.
GLES20.glColorMask(true, true, true, true);
GLES20.glStencilOp(GLES20.GL_KEEP, GLES20.GL_KEEP, GLES20.GL_KEEP);
// draw where the shape has NOT been drawn
GLES20.glStencilFunc(GLES20.GL_NOTEQUAL, 0x1, 0x1);
GLES20.glUseProgram(FragmentHandle);
GLES20.glVertexAttribPointer(0, 3, GLES20.GL_FLOAT, false, 0, bigBuffer);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttrib4f(1, 1.0f, 0.0f, 0.0f, 1.0f);
/*mBatch.draw(texure, Gdx.ScreenWidth/2, Gdx.ScreenHeight/2, 100, 100);
mBatch.flush();*/
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 6);
Expect Result: Expect Result
but the result is: Result1
It's so Weird,Can anyone Help me!