请考虑以下图片作为说明:
最初我用单独的图像填充整个屏幕/舞台,直到屏幕变成粉红色。每个粉红色 Blob 都是我添加到舞台上的一个单独的图像 Actor 。
现在我想以这样一种方式实现 touchDown 方法,即每次用户触摸屏幕时,它都会删除图像中发生触摸事件的部分。但是,该触摸事件不应影响粉红色 blob actor 后面或上方的其他 Images/actors/TextureRegions。我应该如何使用 OpenGL ES 在 libgdx 中实现这一点?请在这方面帮助我。
我找到了解释如何修改 TextureRegion 的链接,但我不知道如何使用此博客中解释的技术来解决我的问题。 Here is the link
最佳答案
可以使用 FBO 和模板缓冲区吗?
为您的“粉红色”层设置一个 FBO 并为其设置一个模板缓冲区。着陆时,将您的触摸作为 mask 绘制到粉红色 FBO 的模板缓冲区。现在,当您绘制粉色 FBO 时,您触摸的区域将不会被渲染,因此您将能够看到它背后的背景 FBO。
此链接http://www.opengl.org/archives/resources/faq/technical/rasterization.htm ,第 14.050 节告诉您如何设置模板缓冲区:
You can set up OpenGL state as follows:
glEnable(GL_STENCIL_TEST); glStencilFunc(GL_ALWAYS, 0x1, 0x1); glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
Subsequent rendering will set a 1 bit in the stencil buffer for every pixel rendered.
您可能需要摆弄一些东西,以便您的 mask 以正确的方式出现( mask 您触摸的地方,而不是您没有触摸的地方。)
关于android - 使用 libgdx 和 OpenGL ES 制作橡皮擦效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373847/