Ошибки OpenGL Эмулятора Android SurfaceView


Я получаю несколько ошибок OpenGL в эмуляторе Android при запуске простого кода для рисования в SurfaceView. В результате SurfaceView не рисует при запуске в эмуляторе. Тот же код корректно выполняется на устройстве (в данном случае Amazon Fire HD 8 (2017-KFDOWI)).

Вот ошибки:

Эмулятор: android / android-emugl / host / libs / Translator/GLES_V2 / GLESv2Imp.cpp: glReadPixels: 2827 ошибка 0x502

Эмулятор: sPrepareTexImage2D: 3087 сбой проверка

Эмулятор: android / android-emugl / host / libs / Translator/GLES_V2 / GLESv2Imp.cpp: glTexImage2D: 3133 ошибка 0x500

Эмулятор: sPrepareTexImage2D: 3087 ошибка проверки

Эмулятор: android / android-emugl / host / libs / Translator/GLES_V2 / GLESv2Imp.cpp: glTexImage2D: 3133 ошибка 0x500

Эмулятор: android / android-emugl / host / libs / Translator/GLES_V2 / GLESv2Imp.cpp: glTexSubImage2D: 3237 ошибка 0x500

Вот код:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class CustomSurfaceView extends SurfaceView implements SurfaceHolder.Callback  {

    private SurfaceHolder surfaceHolder;

    public CustomSurfaceView(Context context) {
        super(context);
        init();
    }

        public CustomSurfaceView(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
        init();
    }

    private void init() {
        this.surfaceHolder = getHolder();
        surfaceHolder.addCallback(this);
    }

    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        Canvas canvas = surfaceHolder.lockCanvas();
        canvas.drawColor(Color.RED);
        surfaceHolder.unlockCanvasAndPost(canvas);
    }

    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
    }
}

Деятельность:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="MainActivity">

    <CustomSurfaceView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</android.support.constraint.ConstraintLayout>

Системная Информация:

  • MacOS High Sierra 10.13.2
  • 16 ГБ ОПЕРАТИВНОЙ ПАМЯТИ
  • Android Studio 3.0.1
  • JRE 1.8.0_152
  • HAXM 6.2.1

Информация AVD:

  • API 25
  • Графика: Автоматическая
  • ОЗУ: 1536 МБ

Информация О Приложении:

  • API 26
  • мин SDK: 19

Кроме того, я могу запустить код OpenGL ES 2.0 в этом же эмулятор без этих проблем.

1 5

1 ответ:

Отключить аппаратное ускорение.

[открыть конфигурацию виртуального устройства - > редактировать виртуальное устройство -> использовать графику в программном режиме]