我想用一些疊加紋理混合相機預覽SurfaceTexture。我正在使用這些着色器進行處理:Android OpenGL SurfaceTexture(外部圖像)和普通紋理的組合
private final String vss = "attribute vec2 vPosition;\n"
+ "attribute vec2 vTexCoord;\n"
+ "varying vec2 texCoord;\n"
+ "void main() {\n"
+ " texCoord = vTexCoord;\n"
+ " gl_Position = vec4 (vPosition.x, vPosition.y, 0.0, 1.0);\n"
+ "}";
private final String fss = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"
+ "uniform samplerExternalOES sTexture;\n"
+ "uniform sampler2D filterTexture;\n"
+ "varying vec2 texCoord;\n"
+ "void main() {\n"
+" vec4 t_camera = texture2D(sTexture,texCoord);\n"
//+" vec4 t_overlayer = texture2D(filterTexture, texCoord);\n"
//+ " gl_FragColor = t_overlayer;\n" + "}";
+ " gl_FragColor = t_camera;\n" + "}";
我的目標是混合t_camera和t_overlayer。當我單獨顯示t_camera或t_overlayer時,它可以工作(顯示相機預覽或紋理)。但是當我取消t_overlayer的註釋時,那麼t_camera變成了黑色(不知何故採樣很嚴重)。我的覆蓋層紋理是512x512和CLAMPT_TO_EDGE。 僅在例如:Android模擬器,HTC Evo 3D上發生此問題。 但在SGS3上,HTC One X,它工作得很好。
出了什麼問題?它是Evo 3D缺少一些擴展還是什麼?
你提到它不適用於Android模擬器。你試過哪個操作系統版本?你嘗試過x86嗎? –
我在MacOSX 10.8.2上使用x64模擬器。 –