使用libgdx和OpenGL ES生成橡皮擦效果

Raf*_*fay 11 android opengl-es pixmap libgdx

请考虑以下图片作为插图: 在此输入图像描述

最初我用整个屏幕/舞台填充单个图像,直到屏幕变为粉红色.每个粉红色的斑点都是我添加到舞台上的单个Image actor.

现在我想以这样的方式实现touchDown方法:每次用户触摸屏幕时,它都会擦除触摸事件发生的图像的一部分.但是,该触摸事件不应影响粉红色blob actor后面或上方的其他Images/actors/TextureRegions.我如何使用OpenGL ES在libgdx中实现这一目标?请帮助我这方面.

我发现这个链接解释了如何修改TextureRegion,但我不知道如何使用本博客中解释的技术来解决我的问题.链接在这里

Sou*_*oup 5

你能用FBO和模板缓冲区吗?

为您的"粉红色"层和模板缓冲区设置FBO.触摸时,将触摸作为掩模绘制到粉红色FBO的模板缓冲区.现在,当您绘制粉红色FBO时,您触摸的区域将不会被渲染,因此您将能够看到它背后的背景FBO.

这个链接http://www.opengl.org/archives/resources/faq/technical/rasterization.htm,第14.050节告诉你如何设置模板缓冲区:

您可以按如下方式设置OpenGL状态:

glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_ALWAYS, 0x1, 0x1);
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
Run Code Online (Sandbox Code Playgroud)

对于每个渲染的像素,后续渲染将在模板缓冲区中设置1位.

你可能不得不摆弄东西,这样你的面具就会以正确的方式出现(面具你触摸的地方,而不是你没有的地方.)