Итак, сначала я рендерил CameraPreview с GLSurfaceView на экран. В методе OnDrawFrame я переключаюсь между GLSurfaceView и EGL Context, чтобы записать экран и, наконец, поменять буферы на MediaCode c. Код работает нормально, и я получаю вывод mp4, но проблема в том, что, поскольку я добавил EGL Context, текстура с Camerapreview изменила свою позицию на экране. Как ни странно, когда я воспроизводил сохраненное видео, все было записано в правильном положении.
Итак, я попытался изменить вершины пропорционально, чтобы предварительный просмотр отображался в правильном положении, но затем положение текстуры в сохраненном видео mp4 также изменилось пропорционально. Почему это так?
Вот метод:
public void onDrawFrame(GL10 gl) {
drawFrame();
makeCurrent();
GLES20.glViewport(0,0, 1920, 1068);
GLES20.glClear(GL_COLOR_BUFFER_BIT);
textureShaderProgram.useProgram();
textureShaderProgram.setUniforms(texture);
table.bindData(textureShaderProgram);
table.draw();
GLES20.glFinish();
EGLExt.eglPresentationTimeANDROID(mEGLDisplay, mEGLSurface, System.nanoTime());
EGL14.eglSwapBuffers(mEGLDisplay, mEGLSurface);
drainEncoder(false);
restoreRenderState();