我正在学习 OpenGL ES 2.0,我想创建一个应用程序以更好地了解它的工作原理。该应用程序有一组过滤器,用户可以将其应用于图像(我知道,没什么新东西:P)。
这个过滤器中的一个需要两张图像和一个蒙版,它混合了两张通过蒙版显示它们的图像(这里的图像可以更好地解释我想要获得的内容)
目前我真的很困惑,我不知道从哪里开始创建这种效果。我不明白我是否必须使用多个纹理和多个帧缓冲区,或者我只能使用单个着色器。
你有什么提示可以帮助我做这个项目吗?
编辑 - - - -
我找到了这个解决方案,但是当我使用遮罩线而不是圆圈时,结果真的很“邋遢”,尤其是当线条旋转时。
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);
}
}
使用模板缓冲区或混合可能更好吗?