Mit dem Stencil Buffer in opengl-es für Android versuche ich nur, den Teil des Bildschirms auszublenden. Ich denke, ich habe es richtig eingerichtet, aber es maskiert die nicht schablonierten Teile nicht. Unten ist eine Extraktion von Code für das, was ich mache.Erste Schritte mit dem OpenGL-ES Stencil Buffer
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);
Wer etwas falsch mit diesem Punkt? Was es tut ist im Grunde eine Box für sagen, die Hälfte des Bildschirms (das funktioniert, wenn ich Farbe aktiviert hatte), die den Stencil-Puffer auf 1 für diesen Bereich setzt. Und am Ende zeichne ich auf den ganzen Bildschirm. Ich möchte, dass es nur in die obere Hälfte zieht, aber es zieht alles an.
Vielen Dank im Voraus.
Gibt es in Ihrer Kontextkonfiguration [irgendwelche Stencilbuffer Bits] (http://www.mail-archive.com/[email protected]/msg21180.html)? – genpfault
Es tut es nicht. Danke, ich dachte, es wäre eine OpenGL-Funktion. Es scheint, als ob es nicht ist. – Moncader