Почему меняются вершины, когда я переключаюсь между GLSurfaceview и EGLContext? - PullRequest
0 голосов
/ 09 января 2020

Итак, сначала я рендерил 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();
...