Bonjour,
Je veux dessiner un trou (une ouverture)dans un quad. J'ai utilisé le stencil buffer pour:
1) dessiner un premier petit quad qui va servir du trou.
2) dessiner un deuxième grand quad qui va servir du quad troué.
Ces deux quads ont le même Z donc ils sont situés dans le même plan.
J'ai utilisé le code java suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Mais j'obtiend pas une ouverture dans le grand quad. Quel est le problème SVP? C'est urgent