1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
//Disable color and depth buffers
gl.glColorMask(false, false, false, false); //Disable writting in color buffer
gl.glDepthMask(false); //Disable writting in depth buffer
gl.glEnable(GL.GL_STENCIL_TEST); //Enable Stencil test
gl.glStencilFunc(GL.GL_ALWAYS, 1, 1); //Test always success, value written 1
gl.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE); //Stencil & Depth test passes => replace existing value
gl.glBegin(GL.GL_QUADS);
gl.glNormal3f( 0.0f, 0.0f, 1.0f);
//gl.glColor3f(0, 0, 0);
gl.glVertex3f(-0.5f, -0.5f, 1.0f);
gl.glVertex3f( 0.5f, -0.5f, 1.0f);
gl.glVertex3f( 0.5f, 0.5f, 1.0f);
gl.glVertex3f(-0.5f, 0.5f, 1.0f);
gl.glEnd();
gl.glDepthMask(true);
gl.glColorMask(true, true, true, true); //Enable drawing of r, g, b & a
gl.glStencilFunc(GL.GL_EQUAL, 1, 1); //Draw only where stencil buffer is 1
gl.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); //Stencil buffer read only
gl.glPushMatrix();
gl.glScalef(1.0f, -1.0f, 1.0f); //Mirror Y
gl.glEnable(GL.GL_LIGHTING);
//gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPos);
gl.glBegin(GL.GL_QUADS);
gl.glNormal3f( 0.0f, 0.0f, 1.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);
gl.glVertex3f( 1.0f, -1.0f, 1.0f);
gl.glVertex3f( 1.0f, 1.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glEnd();
gl.glDisable(GL.GL_LIGHTING);
gl.glPopMatrix();
gl.glDisable(GL.GL_STENCIL_TEST); //Disable Stencil test |
Partager