Avatar billede firecow Nybegynder
19. august 2008 - 17:22 Der er 1 løsning

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...
Avatar billede firecow Nybegynder
18. februar 2010 - 10:40 #1
Den er vidst død...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester