Forståelse af Stencilbuffer i JOGL
Hej.. Jeg sidder og bakser med nogle skygger i Jogl, men jeg har lidt problemer med Jogl's metoder StencilOp() og StencilFunc(). Så for at få lidt klarhed over det har jeg lavet et lille testmiljø, med denne Displaymetode.public void display(GLAutoDrawable gLDrawable)
{
final GL gl = gLDrawable.getGL();
/* -- Clear the Buffers and Matrix -- */
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glClear(GL.GL_DEPTH_BUFFER_BIT);
gl.glClear(GL.GL_STENCIL_BUFFER_BIT);
gl.glLoadIdentity();
/* -- End -- */
/* -- Initiating start position for users viewpoint -- */
gl.glTranslatef(0.0f, -1.0f, -7.0f);
gl.glRotatef(20, 1, 0, 0);
/* -- End -- */
/* -- Draws only to the StencilBuffer -- */
gl.glColorMask(false, false, false, false);
gl.glDisable(GL.GL_DEPTH_TEST);
gl.glEnable(GL.GL_STENCIL_TEST);
gl.glStencilFunc(GL.GL_ALWAYS, 1, 1);
gl.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_REPLACE);
floorspot.draw();
/* -- End -- */
/* -- Draw the floor with a spot missing */
gl.glColorMask(true, true, true, true);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glStencilFunc(GL.GL_EQUAL, 0, 1);
gl.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP);
floor.draw();
/* -- End -- */
}
floor.draw() tegner bare en Quad, og floorspot.draw() tegner en lidt mindre Quad, som ligger midt i mit floor.
Det der gerne skulle ske her er at mit floor skal blive tegnet, med et hul i midten, som svarer til floorspot.
Men det sker bare ikke, så hvis nogle der har lidt styr på Stencil kunne hjælpe her, for jeg har lidt problemer med at gennemskue parametrene i StencilOp() og StencilFunc().
På forhånd tak...