Android OpenGL Kombination von SurfaceTexture (externes image) und normale textur

ich würde gerne mischen Kamera-Vorschau SurfaceTexture mit einigen overlay-textur. Ich bin mit diesen Shader für die Verarbeitung:

    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" + "}";

Mein Ziel ist zu mischen t_camera und t_overlayer. Wenn ich zeige, t_camera oder t_overlayer getrennt, es funktioniert (zeigt Kamera-Vorschau oder textur). Aber wenn ich die Auskommentierung t_overlayer, dann t_camera wurde schwarz (irgendwie schlecht abgetastet). Mein Deckschicht textur ist 512x512 und CLAMPT_TO_EDGE.
Dieses problem tritt nur auf, zum Beispiel auf: Android-Emulator, HTC Evo 3D.
Aber auf SGS3, HTC One X, es funktioniert Prima.

Was ist falsch? Wird es Evo 3D fehlt, Erweiterung oder was?

  • Sie erwähnt, dass es nicht funktioniert auf Android-Emulator. Welche OS-version hast du versucht? Haben Sie versucht, x86?
  • Ich bin mit x64 emulator für MacOSX 10.8.2.
Schreibe einen Kommentar