2016-05-12 13 views
1

Nur eine kurze Frage: Ich verwende einen Shader, der ein Video als GL_TEXTURE_EXTERNAL_OES aus einem SurfaceTexture zulässt, aber jetzt möchte ich es ändern, um zwei Videos als 2 GL_TEXTURE_EXTERNAL_OES aus zwei verschiedenen zu akzeptieren OberflächenTextures.Verwenden Sie mehr als ein SurfaceTexture auf einem Shader

Gibt es eine Möglichkeit, dies zu tun? Ich folge diesen Code als Beispiel: https://github.com/mstorsjo/android-decodeencodetest/tree/master/src/com/example/decodeencodetest und ich versuche zu tun:

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"); 

Aber ich habe nicht in der Lage, damit es funktioniert, ich habe nicht zu viel Hoffnung, obwohl in diesem Code haben xD. Jedenfalls würde ich jeder Art von Hilfe danken.

Antwort

Verwandte Themen