2016-10-13 5 views
0

イメージをテクスチャとしてロードし、GLESを介してMediaCodecサーフェスの入力方法を使用してレンダリングするにはどうすればよいですか?Androidイメージとビデオ

私はEncodeAndMuxTestの例から始めました。

ありがとうございます。 grafikaからのサンプルで

答えて

0

見て、それはあなたがここでそれを

を行うべきかについての洞察がテクスチャ

int mTextureId = -1; 

public void loadTexture(Bitmap bitmap) 
{ 
    if (mTextureId != -1) { 
     int[] textureHandle = new int[1]; 

     GLES20.glGenTextures(1, textureHandle, 0); 


     GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureId); 

     GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_MIN_FILTER, 
      GLES20.GL_NEAREST); 
     GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_MAG_FILTER, 
      GLES20.GL_LINEAR); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_WRAP_S, 
      GLES20.GL_CLAMP_TO_EDGE); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, 
      GLES20.GL_TEXTURE_WRAP_T, 
      GLES20.GL_CLAMP_TO_EDGE); 
    } else { 
     GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureId); 
    } 

    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 
} 

、ここにビットマップをロードするためのコードであるあなたを与えるだろうあなたはinputsurfaceにそれをレンダリングすることができる方法であります

// Create Fullframe rectangle (a class from grafika), 
mInputSurface.makeCurrent(); 
mFullFrameRect = new FullFrameRect(new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_2D)); 

.... 


// And when you want to draw it 
mInputSurface.makeCurrent(); // if its not already current 
loadTexture(bitmap); 
GLES20.glViewport(0, 0, viewWidth, viewHeight); 
mFullFrameRect.drawFrame(mTextureId, GlUtil.IDENTITY_MATRIX); 
mInputSurface.setPresentationTime(pts); 
mInputSurface.swapBuffers(); 

FullFrameRectTexture2dProgramGlUtil Grafikaからクラスですので、あなたが警官べきあなた自身も同様の機能を実装しています

+0

お返事ありがとうございます。私はあなたの解決策を試してみましたが、まだ黒い画面のビデオが表示されています。私が理解できないことは、イメージテクスチャをレンダリングするためにGLSurfaceViewが必要なのでしょうか?ありがとう – Siv

+0

私はイメージを変換することができました。私はEglの文脈に間違った設定をしていました。ご協力いただきありがとうございます。 – Siv

+0

@Sivはあなたの解決策が何であるかを知るのに役立ちます –

関連する問題