Android-Openglで画像フィルタ機能を実現


GPUIMageでは既に2 D画像フィルタ機能が実現しており、プロジェクトはパノラマ画像であるため、GPUImageではフィルタ機能のshaderファイルを自分用に持ってくるしかない.
フィルタを切り替えるたびにテクスチャがロードされる流れを記録します
  GLES20.glUseProgram(mProgram);
  GLES20.glDetachShader(mProgram, oldFshId);//detach old shader id
   int fshId = this.loadShader(GLES20.GL_FRAGMENT_SHADER, newFragmentShader);//load new fragment shader
   GLES20.glAttachShader(mProgram, fshId);// attach new shader id
   GLES20.glLinkProgram(mProgram);
   GLES20.glDeleteShader(fshId);
   filterInputTextureUniform2 = GLES20.glGetUniformLocation(mProgram, "inputImageTexture2");
   filterInputTextureUniform3 = GLES20.glGetUniformLocation(mProgram, "inputImageTexture3");
   filterInputTextureUniform4 = GLES20.glGetUniformLocation(mProgram, "inputImageTexture4");
   filterInputTextureUniform5 = GLES20.glGetUniformLocation(mProgram, "inputImageTexture5");
   filterInputTextureUniform6 = GLES20.glGetUniformLocation(mProgram, "inputImageTexture6");
   GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
   GLES20.glBindTexture(GL_TEXTURE_2D, msTextureId);
   GLES20.glUniform1i(msTextureLoc, 0);

フィルタを修正するだけなので、テクスチャ座標を再ロードするだけで、頂点座標を変更する必要はありません.