Подтвердить что ты не робот

Поддерживает ли эмулятор Android OpenGL ES 3.0?

Я знаю, что эмулятор поддерживал OpenGL ES 2.0 с SDK-инструментами 17 и Android 4.0.3, но это было введено еще в апреле 2012.

Поддерживает ли эмулятор Android OpenGL ES 3.0, или мы все еще ждем этого?
Если нет, поддерживает ли какой-либо другой эмулятор/эмулятор третьей стороны (например, Genymotion) OpenGL ES 3.0?

4b9b3361

Ответ 1

Даже поддержка OpenGL ES 2.0 несколько ограничена и не работает в эмуляторе. Но, например, Nexus4 поддерживает OpenGL ES 3.0. И используется N4 дешево.

Честно говоря, я не ожидаю поддержки OpenGL ES 3.x в эмуляторе. Это не компульсивная часть спецификаций Android - это дополнительная функция, которая может присутствовать и может отсутствовать. Поэтому я бы рекомендовал придерживаться реального оборудования даже для тестирования OpenGL ES 3.x. Если вам нужно протестировать функции приложений, не требующих OpenGL ES 3.0, вам хорошо пойти на эмуляторы. Но для тестирования любого OpenGL ES (от 1.0 до 3.1) я настоятельно рекомендую использовать настоящие устройства по двум причинам: во-первых, среда GL на реальных устройствах стабильна (на эмуляторе она имеет ограниченные возможности, багги и нестабильность, может даже сбой эмулятора иногда), а во-вторых, вы можете найти много ошибок/ограничений для OpenGL/аппаратных ошибок на разных реальных графических процессорах.

Ответ 2

Ни эмулятор Android, ни системные образы, ни Genymotion не поддерживают OpenGL ES версии 3.0.

Как я уже писал, последние (Rev.1) ARM и x86 системные образы для Android 5.1.1 (API 22) сообщают, что они поддерживают OpenGL ES Version 2.0, а не 3.0.

Аналогично, виртуальное устройство Genialotion Nexus 5 Android 5.1.0 API 22 сообщает только поддержку OpenGL ES версии 2.0.

Вы можете использовать приведенный ниже код, чтобы проверить поддержку будущих изображений системы и эмуляторов:

package com.example.opengltest;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ConfigurationInfo;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class OpenGLESVersionActivity extends Activity {

    private static final String TAG = "OpenGLESVersionActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final ActivityManager activityManager =
                (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        final ConfigurationInfo configurationInfo =
                activityManager.getDeviceConfigurationInfo();
        String versionText = "Device Supported OpenGL ES Version = " + configurationInfo.getGlEsVersion();
        Toast.makeText(this, versionText, Toast.LENGTH_LONG).show();
        Log.d(TAG, versionText);
    }

}

Ответ 3

Последний Android-эмулятор теперь поддерживает OpenGL ES 3.0. Для использования OpenGL ES 3.0 вашей машине разработки требуется графическая плата хост-графического адаптера, поддерживающая OpenGL 3.2 или выше в Microsoft® Windows® или Linux.

См: https://android-developers.googleblog.com/2017/05/android-studio-3-0-canary1.html

OpenGL ES 3.0 в Android эмуляторе

gles3jni пример приложения из NDK - хороший вариант попробовать.

Если сбой:

java.lang.RuntimeException: createContext failed: EGL_BAD_CONFIG

также попробуйте запустить сначала на хосте:

echo "GLESDynamicVersion = on" >> ~/.android/advancedFeatures.ini

поскольку разработчики в настоящее время поддерживают белый список поддерживаемых GPU хостов, и это переопределяет его, см. также: https://issuetracker.google.com/issues/68496715

Ответ 4

Я нашел версию, которую эмулятор поддерживает при запуске glGetString(GLES20.GL_VERSION). Похоже, что тестируемые эмуляторы не поддерживают OpenGL ES 3.0 или выше, но я не хочу предполагать, что то, что они сообщают, это то, что они фактически поддерживают, поэтому я не делаю никаких promises, что это слово является окончательным.

На моем Nexus 5

OpenGL ES 3.0 [email protected] [email protected] ([email protected])

Android-эмулятор с использованием HAXM

OpenGL ES 2.0 (2.1 NVIDIA-10.2.7 310.41.25f01)

Эмулятор Genymotion

OpenGL ES 2.0 (2.1 NVIDIA-10.2.7 310.41.25f01)