我正在学习OpenGL ES 2.0,我想创建一个应用程序以更好地了解它是如何工作的。 该应用程序有一套过滤器,用户可以应用在图像上(我知道,没有新的:P)。OpenGL ES 2.0中的图像和蒙版
一个该过滤器的采用两个图像和口罩,并通过面具融合两种图像显示他们(这里的图像,以便更好地解释,我想获得什么)
目前我很困惑,我不知道从哪里开始创造这种效果。 我无法理解,我必须使用多个纹理和多个FrameBuffers,或者我可以使用单个着色器。
你有什么提示可以帮我做这个项目吗?
编辑--------
我发现这个解决方案,但是当我作为掩膜线而不是圆使用结果真的是“蹩脚”,特别是如果线旋转。
precision highp float;
varying vec4 FragColor;
varying highp vec2 TexCoordOut;
uniform sampler2D textureA;
uniform sampler2D textureB;
uniform sampler2D mask;
void main(void){
vec4 mask_color = texture2D(mask, TexCoordOut);
if (mask_color.a > 0.0){
gl_FragColor = texture2D(textureA, TexCoordOut);
}else {
gl_FragColor = texture2D(textureB, TexCoordOut);
}
}
使用模板缓冲区或混合可能会更好吗?
顺便说一句,你不必使用alpha('mask_color.a')通道作为掩码。你可以使用任何其他的'r','g','b'通道,这样你就可以通过使用不带alpha通道的遮罩纹理来节省GPU内存。 – keaukraine
@MatterGoal可能是你可以回答这个问题,http://stackoverflow.com/questions/24486729/uiimage-masking-with-gesture –