Opengl es 如何使用OpenGL ES平滑混合2种颜色

Opengl es 如何使用OpenGL ES平滑混合2种颜色,opengl-es,glsl,opengl-es-2.0,opencv3.0,Opengl Es,Glsl,Opengl Es 2.0,Opencv3.0,我尝试使用OpenGL绘制一个遮罩帧覆盖输入帧 面具框架是红色的唇形 输入帧是一个面 当我画画时,我意识到画得并不流畅 我需要建议一些关键字或解决方案 这是我的密码 uniform sampler2D input_frame; uniform sampler2D overlay; uniform vec3 target_color; void main() { vec4 image_pix = texture2D(input_frame, sample_coordinate);

我尝试使用OpenGL绘制一个遮罩帧覆盖输入帧

面具框架是红色的唇形

输入帧是一个面

当我画画时,我意识到画得并不流畅

我需要建议一些关键字或解决方案

这是我的密码

 uniform sampler2D input_frame;
 uniform sampler2D overlay;
 uniform vec3 target_color;

   void main() {
 vec4 image_pix = texture2D(input_frame, sample_coordinate);
 vec4 overlay_pix = texture2D(overlay, sample_coordinate);
 vec4 color2 = vec4(target_color, 1.0);

 float luminance = dot(image_pix.rgb, vec3(0.299, 0.587, 0.114));
 float mix_value = overlay_pix.r * luminance;
 fragColor = mix(image_pix, color2, mix_value);
}
这是我的结果:

这是我的目标:

您可以通过将嘴唇淡入叠加纹理的边缘来实现平滑效果。您可以通过将嘴唇淡入叠加纹理的边缘来实现平滑效果。