在着色器上使用多个 SurfaceTexture

Use more than one SurfaceTexture on a shader

只是一个简单的问题:我使用的着色器允许来自 SurfaceTexture 的视频作为 GL_TEXTURE_EXTERNAL_OES,但现在我想修改它以接受来自 SurfaceTexture 的两个视频作为 2 GL_TEXTURE_EXTERNAL_OES两个不同的表面纹理。

有办法吗?我以这段代码为例:https://github.com/mstorsjo/android-decodeencodetest/tree/master/src/com/example/decodeencodetest 并且我正在尝试这样做:

    int[] textures = new int[2];
        GLES20.glGenTextures(2, textures, 0);
mTexture1ID = textures[0];
        GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
        GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, mTexture1ID);
        checkGlError("glBindTexture mTexture1ID");

        GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER,
                GLES20.GL_NEAREST);
        GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER,
                GLES20.GL_LINEAR);
        GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S,
                GLES20.GL_CLAMP_TO_EDGE);
        GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T,
                GLES20.GL_CLAMP_TO_EDGE);
        checkGlError("glTexParameter");

        mTexture2ID = textures[1];
        GLES20.glActiveTexture(GLES20.GL_TEXTURE1);
        GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, 2);
        checkGlError("glBindTexture mTexture2ID");

        GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER,
                GLES20.GL_NEAREST);
        GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER,
                GLES20.GL_LINEAR);
        GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S,
                GLES20.GL_CLAMP_TO_EDGE);
        GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T,
                GLES20.GL_CLAMP_TO_EDGE);
        checkGlError("glTexParameter");

但是我没能让它工作,虽然 xD 我对这段代码没有太大的希望。不管怎样,我会感谢任何形式的帮助。

好的,遇到这个问题的朋友可以参考一下:

https://software.intel.com/sites/landingpage/mmsf/documentation/mmsf_android_example3.html

可以在着色器中使用多个外部纹理。