Как нарисовать растровое изображение поверх EglSurface в Google Grafika ContinuousCaptureActivity?
Я пытаюсь нарисовать водяной знак на видео с помощью функции GLUtils.texImage2D, но он не отображается при просмотре и записи видео. Что я делаю не так?
private void drawFrame() {
mDisplaySurface.makeCurrent();
mCameraTexture.updateTexImage();
mCameraTexture.getTransformMatrix(mTmpMatrix);
AutoFitTextureView sv = (AutoFitTextureView) findViewById(R.id.texture);
int viewWidth = sv.getWidth();
int viewHeight = sv.getHeight();
GLES20.glViewport(0, 0, viewWidth, viewHeight);
mFullFrameBlit.drawFrame(mTextureId, mTmpMatrix);
drawExtra(mFrameNum, viewWidth, viewHeight);
loadWatermark(BitmapFactory.decodeResource(getResources(), R.drawable.ic_settings_white_24dp));
mDisplaySurface.swapBuffers();
if (!mFileSaveInProgress) {
mEncoderSurface.makeCurrent();
GLES20.glViewport(0, 0, videoHeightSetting,
videoWidthSetting);
mFullFrameBlit.drawFrame(mTextureId, mTmpMatrix);
drawExtra(mFrameNum,
videoWidthSetting,
videoHeightSetting);
loadWatermark(BitmapFactory.decodeResource(getResources(), R.drawable.ic_settings_white_24dp));
mCircEncoder.frameAvailableSoon();
mEncoderSurface.setPresentationTime(mCameraTexture.getTimestamp());
mEncoderSurface.swapBuffers();
}
mFrameNum++;
}
private void loadWatermark(Bitmap bitmap) {
final int[] textureHandle = new int[1];
GLES20.glGenTextures(1, textureHandle, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0]);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
}