我想将相机预览SurfaceTexture与一些叠加纹理混合.我正在使用这些着色器进行处理:
private final String vss = "attribute vec2 vPosition;
"
+ "attribute vec2 vTexCoord;
"
+ "varying vec2 texCoord;
"
+ "void main() {
"
+ " texCoord = vTexCoord;
"
+ " gl_Position = vec4 ( vPosition.x, vPosition.y, 0.0, 1.0 );
"
+ "}";
private final String fss = "#extension GL_OES_EGL_image_external : require
"
+ "precision mediump float;
"
+ "uniform samplerExternalOES sTexture;
"
+ "uniform sampler2D filterTexture;
"
+ "varying vec2 texCoord;
"
+ "void main() {
"
+" vec4 t_camera = texture2D(sTexture,texCoord);
"
//+" vec4 t_overlayer = texture2D(filterTexture, texCoord);
"
//+ " gl_FragColor = t_overlayer;
" + "}";
+ " gl_FragColor = t_camera;
" + "}";
我的目标是混合t_camera和t_overlayer.当我单独显示t_camera或t_overlayer时,它可以工作(显示相机预览或纹理).但是当我取消注释t_overlayer时,t_camera变成黑色(不知何故被严重抽样).我的覆盖层纹理是512×512和CLAMPT_TO_EDGE.
此问题仅出现在以下示例:Android模拟器,HTC Evo 3D.
但是在SGS3,HTC One X上,它运行得很好.
怎么了?是Evo 3D缺少一些扩展还是什么?