本节介绍用opengles实现opencv中线性混合的效果,基本原理是在片元着色器中按一定比例混合两个纹理。
precision mediump float;
varying vec2 vTextureCoord;//接收从顶点着色器过来的参数
uniform sampler2D sTexture1;//纹理内容数据1
uniform sampler2D sTexture2;//纹理内容数据2
uniform float uT;
void main() {
vec4 color1 = texture2D(sTexture1, vTextureCoord); //从纹理中采样出颜色值1
vec4 color2 = texture2D(sTexture2, vTextureCoord); //从纹理中采样出颜色值2
gl_FragColor = color1*(1.0-uT) + color2*uT;// 混合两个颜色值
}
surface中不断改变混合比例
package com.bn.Sample2_6;
import java.io.IOException;
import java.io.InputStream;
import android.opengl.GLSurfaceView;
import android.opengl.GLES20;
import android.opengl.GLUtils;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactor