Estoy usando libgdx con OpenGL ES 1.0 y me pregunto si el SpriteBatch puede escribir/dibujar en el buffer de esténcil. He estado tratando de escribir y no obtengo ningún resultado, no tengo experiencia en usar el buffer de esténcil, pero he estado leyendo mucho, así que corrígeme si me equivoco en lo que sigue. Básicamente lo que quiero hacer es dibujar una textura con un SpriteBatch en el buffer de la plantilla así que cuando dibujo algo más (con el stencil buffer desactivado) Solo se dibuja en las regiones donde el buffer de esténcil es 1.Libgdx ¿SpriteBatch se basa en StencilBuffer?
Este es mi resultado deseado: Si dibujo una textura con forma de estrella en el buffer de la plantilla y luego dibujo una textura roja en el buffer de color, quiero que la textura roja omita los píxeles donde está la estrella en el buffer de esténcil.
Este es mi código hasta ahora:
batch.begin();
Gdx.gl10.glEnable(GL10.GL_STENCIL_TEST);
Gdx.gl10.glEnable(GL10.GL_ALPHA_TEST);
Gdx.gl10.glStencilFunc(GL10.GL_ALWAYS, 0x1, 0xffffffff);
Gdx.gl10.glStencilOp(GL10.GL_REPLACE, GL10.GL_REPLACE, GL10.GL_REPLACE);
Gdx.gl10.glColorMask(false, false, false, false);
batch.draw(myShape, 100, 100); //draw to the stencil buffer a shape (texture region)
batch.end();
batch.begin();
Gdx.gl10.glColorMask(true, true, true, true);
Gdx.gl10.glStencilOp(GL10.GL_KEEP, GL10.GL_KEEP, GL10.GL_KEEP);
// draw where the shape has NOT been drawn
Gdx.gl10.glStencilFunc(GL10.GL_NOTEQUAL, 0x1, 0xff);
batch.draw(BackGroundLayer, 0, 0);// draw background
Gdx.gl10.glDisable(GL10.GL_STENCIL_TEST);