Za pomocą bufora szablonu w opengl-es na Androida po prostu próbuję maskować część rysunku. Myślę, że mam to ustawione poprawnie, ale to nie maskuje nieplamionych części. Poniżej znajduje się ekstrakcja kodu dla tego, co robię.Uzyskiwanie buforowego bufora szablonów 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);
Ktoś coś z tym nie tak? Zasadniczo wystarczy narysować pole, powiedzmy, połowę ekranu (działa to, jeśli miałem włączony kolor), który ustawia bufor szablonu na 1 dla tego obszaru. I na koniec rysuję na całym ekranie. Chcę, aby rysował tylko do górnej połowy, ale rysuje wszystko.
Z góry dziękuję.
Czy konfiguracja kontekst [jakieś bity bufor szablonowy] (http://www.mail-archive.com/[email protected]/msg21180.html)? – genpfault
Nie. Dziękuję, pomyślałem, że jest to wymagana funkcja OpenGL. Wydaje się, że tak nie jest. – Moncader