Sto usando libgdx con OpenGL ES 1.0 e mi chiedo se lo SpriteBatch può scrivere/disegnare sul buffer dello stencil. Ho cercato di scriverci sopra e non ottengo alcun risultato, non ho esperienza con il buffer degli stencil, ma ho letto molto e quindi correggimi se sbaglio in qualcosa che segue. Fondamentalmente quello che voglio fare è disegnare una texture con una SpriteBatch nel buffer dello stencil, così quando disegno qualcos'altro (con il buffer dello stencil disabilitato) Viene disegnato solo sulle regioni dove il buffer stencil è uguale a 1.Libgdx SpriteBatch disegna su StencilBuffer?
Questo è il mio risultato desiderato: Se disegno una texture con una forma a stella nel buffer dello stencil e poi disegno una texture rossa nel buffer di colore, voglio che la texture rossa ometti i pixel in cui la stella si trova nel buffer dello stampino.
Questo è il mio codice finora:
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);