Con il buffer stencil in opengl-es per Android, sto semplicemente cercando di mascherare il disegno di una parte dello schermo. Penso di averlo impostato correttamente, ma non sta mascherando le parti non stenciled. Di seguito è un'estrazione di codice per quello che sto facendo.Utilizzo dello stencil buffer OpenGL-ES
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);
Qualcuno ha notato qualcosa di sbagliato in questo? Quello che fa in pratica è disegnare una casella per dire, metà dello schermo (questo funziona se avessi il colore abilitato) che sta impostando il buffer stencil su 1 per quell'area. E alla fine disegno su tutto lo schermo. Voglio che sia disegnato solo per la metà superiore, ma disegna tutto.
Grazie in anticipo.
La vostra configurazione di contesto [ha nessun bit stencil buffer] (http://www.mail-archive.com/[email protected]/msg21180.html)? – genpfault
Non è così. Grazie, ho pensato che fosse una funzionalità opengl richiesta. Sembra come se non lo fosse. – Moncader