Con el búfer de stencil en opengl-es para Android, simplemente estoy tratando de enmascarar el dibujo de una parte de la pantalla. Creo que lo tengo configurado correctamente, pero no está enmascarando las partes sin estarcido. Debajo hay una extracción de código para lo que estoy haciendo.Obteniendo el búfer de plantillas de OpenGL-ES trabajando
gl.glEnable(GL10.GL_STENCIL_TEST);
gl.glClearStencil(0);
gl.glClear(GL10.GL_STENCIL_BUFFER_BIT);
gl.glColorMask(false, false, false, false);
gl.glDepthMask(false);
gl.glStencilFunc(GL10.GL_ALWAYS, 1, 1);
gl.glStencilOp(GL10.GL_REPLACE, GL10.GL_REPLACE, GL10.GL_REPLACE);
drawMask(); //I have confirmed this draws to the correct location by allowing colour to show. Trust that this draws the mask to the correct location.
gl.glColorMask(true, true, true, true);
gl.glDepthMask(true);
gl.glStencilFunc(GL10.GL_EQUAL, 1, 1);
gl.glStencilOp(GL10.GL_KEEP, GL10.GL_KEEP, GL10.GL_KEEP);
drawItems(); //Draw everything. Only items inside the masked area should be drawn. But everything is drawn with this code...
gl.glDisable(GL10.GL_STENCIL_TEST);
¿Alguien encuentra algo malo con esto? Lo que hace básicamente es dibujar un recuadro para decir, la mitad de la pantalla (esto funciona si tenía el color habilitado) que está configurando el buffer de esténcil en 1 para esa área. Y al final dibujo a toda la pantalla. Quiero que dibuje solo a la mitad superior, pero dibuja todo.
Gracias de antemano.
¿Su configuración contexto [tiene ningún bits de amortiguamiento de la plantilla] (http://www.mail-archive.com/[email protected]/msg21180.html)? – genpfault
No es así. Gracias, pensé que era una característica OpenGL requerida. Parece que no lo es. – Moncader