OpenGL ES iPhone中的橡皮擦

3

我有两张重叠在一起的图片(就像卡片叠放在一起的方式)。

现在,如果我用手指滑过最上面的图片,那个部分的图片应该变成透明的(透明度应该为0)。

我是OpenGL ES开发的新手。

请帮我或给我任何建议来完成这个功能。

提前感谢。

2个回答

1
你需要使用帧缓冲对象(FBO)进行纹理渲染。将图案渲染到所需的纹理上,但只渲染到 alpha 通道,可以使用 glColorMask(它可以屏蔽除 alpha 以外的所有颜色通道),然后将图案绘制到 alpha 通道中,将 alpha 设置为 0.0,最后像正常显示纹理一样显示即可。

谢谢您的回复。我正在iPhone上实现类似GLPAINT(iPhone示例代码)的绘画应用程序。您有任何想法如何实现撤消我的绘画吗? - bazooka
你是不是想要这样做?FrameBuffer.clearAllFrameBuffers(Gdx.app); fbo1.begin(); Gdx.gl20.glClearColor(0, 0, 0, 0); batch.begin(); rubber.draw(batch, 0); Gdx.gl20.glColorMask(false, false, false, true); coverHeart.draw(batch, 1); Gdx.gl20.glColorMask(true, true, true, false); batch.end(); fbo1.end();我正在使用libgdx框架。我试图画一个带有空心正方形的心形,但是这个东西没有起作用。你能不能给我一点指导? - Rafay

0

我刚刚做了类似的事情,我在GLBlending中找到了一个解决方案:

if (eraseMode) {
    glBlendFunc(1.0,0.0);
}
else {
    glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
}

虽然需要一些美化,但这是一个适合基本需求的简单解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接