android - 使用 libgdx 和 OpenGL ES 制作橡皮擦效果

标签 android opengl-es libgdx pixmap

请考虑以下图片作为说明: enter image description here

最初我用单独的图像填充整个屏幕/舞台,直到屏幕变成粉红色。每个粉红色 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/

相关文章:

android - 如何再次调用 LiveData Coroutine Block

android - 在设备上安装 apk 时出现“权限被拒绝”错误

java - 如何在android中绘制全屏?

eclipse - 将项目导入eclipse只导入Android项目

java - android服务器如何知道客户端断开连接或关闭

android-saripaar v2 messageResId 必须是常量

android - 如何在整个应用程序中使用自定义工具栏

ios - EXC_BAD_ACCESS 在启动时用于 EAGLContext renderbuffer 存储 : fromDrawable: in Cocos2d app whie debugging

android - 如何在 libgdx 中将 Assets 从 android 链接到桌面?

android - 需要 libgdx 的凹凸贴图示例