在着色器

时间:2016-05-12 14:22:03

标签: android textures shader opengl-es-2.0

一个简单的问题:我使用了一个着色器,它将一个视频作为来自SurfaceTexture的GL_TEXTURE_EXTERNAL_OES接受,但现在我想修改它以接受来自两个不同SurfaceTextures的两个视频作为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。无论如何,我要感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

好吧,对于任何到达这个问题的人,请参考:

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

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