11

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

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

现在我想以这样一种方式实现 touchDown 方法,即每次用户触摸屏幕时,它都会擦除发生触摸事件的图像的一部分。但是,该触摸事件不应影响粉红色 blob 演员后面或之上的其他图像/演员/纹理区域。我应该如何使用 OpenGL ES 在 libgdx 中实现这一点?请在这方面帮助我。

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

4

1 回答 1

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);

后续渲染将为渲染的每个像素在模板缓冲区中设置一个 1 位。

你可能不得不摆弄一些东西,这样你的掩蔽就会以正确的方式出现(你接触过的面具,而不是你没有接触过的地方。)

于 2012-05-10T04:13:34.467 回答