Как сохранить данные рендеринга в виде текстуры, когда он вызвал detachFromWindow ()? - PullRequest
0 голосов
/ 17 января 2019

Я хочу добавить текстурный вид в группу просмотра, и эта группа будет часто вызывать attachToWindow и detachFromWindow. Чтобы не отображать черный вид, я сохранил текстуру поверхности этого вида текстуры следующим образом.

Это полезно для большинства мобильных телефонов, но бесполезно для некоторых устройств с графическим процессором Mali-T624 ~ 860 / Intel HD Graphics для Atom x5. И версия этих бесполезных устройств GlEs ниже 3.2 (3.1 / 3.0).

Как мне решить проблему?

    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
        if (mMediaPlayer == null) {
            initPlayer();
        }
        if (mSurfaceTexture == null) {
            mSurfaceTexture = surface;
            if (mSurface == null) {
                mSurface = new Surface(mSurfaceTexture);
                mMediaPlayer.setSurface(mSurface);
            }
        } else {
            mVideoTextureView.setSurfaceTexture(mSurfaceTexture);
        }
    }

Я нахожу журнал, когда метод не работает.

queueBuffer: слот 1 удален, дескриптор = 0xaf850780

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете решить эту проблему с помощью очень простого пользовательского TextureView.

Создайте новый подкласс TextureView и переопределите метод destroyHardwareResources. Не забудьте сделать этот метод пустым. Тогда вы получите то, что хотите.

public class MyTextureView extends TextureView {
...
...
@Override
protected void destroyHardwareResources() {

}
...
...

}

...