Есть ли способ проверить, поддерживает ли устройство Android openGL ES 3.0?
Мне нужно динамически проверять, поддерживает ли используемое устройство openGL ES 3.0.
Как я могу это сделать?
Я ничего не могу найти в гугле или здесь .

Я собираюсь расширить этот ответ . В этом ответе есть начальная часть с информацией о конфигурации и получением файла reqGlEsVersion . Обратите внимание, что он получает фактическую версию OpenGL устройства, а не требуемую версию, объявленную в манифесте, как предлагается в некоторых комментариях.
Однако я наткнулся на довольно очевидный метод в ConfigurationInfo названном классе getGlEsVersion . Он полагается на reqGlEsVersion систему в классе ConfigurationInfo и возвращает значение String. С небольшой настройкой я сделал простой тестовый фрагмент:
Устройство, на котором я тестировал, поддерживает и использует GLES 3.2, а тестовое приложение объявляет GLES3.0 в манифесте.
Запускаем эти отпечатки:
Вся суть этих трех операторов печати заключалась в том, чтобы показать, что любой из этих способов работает. Он печатает версию, поддерживаемую устройством, а не версию, указанную в манифесте, как указано в некоторых комментариях.
Таким образом, вы можете использовать любой из этих способов, чтобы проверить версию OpenGL ES на данном устройстве. Лично я использую это:
но это также работает (и немного более эффективно с точки зрения памяти):
Вы, конечно, можете показать тост и выйти, диалог, действие, фрагмент, что угодно, если пользователь не соответствует требованиям. Вы также должны, потому что, если он поступает со стороннего сайта, есть вероятность, что требования были обойдены. Я просто выбрасываю исключение, потому что объявляю об использовании GLES3 в манифесте, что означает, что такого выброса не должно происходить в первую очередь.
Что касается тега манифеста:
Это не препятствует установке приложений с GLES2 или более ранней версией, если они получили, например, прямую установку из файла APK или через отладку по USB. Это флаг, который сообщает Google Play (или любым другим существующим магазинам, которые проверяют это), что GLES <(в данном случае) 3 не поддерживается, и Google Play предотвратит установку. Но любой может установить его с зеркала, которое игнорирует подобные вещи, поэтому сам тег не является способом предотвратить его установку GLES2 и более низкими устройствами.
И, конечно, есть eglCreateContext() метод, но он работает только с собственной системой. Он не работает с такими вещами, как LibGDX или что-либо, что использует отдельный рендерер, поскольку он создает другой контекст, чем библиотека.
И glGetString(GL_VERSION) будет работать в основном где угодно, если метод поддерживается библиотекой / фреймворком. Тем не менее, он изначально интегрирован в GLES2 и требует сначала создания контекста OpenGL. Для Android лучше использовать первые методы. Однако это, конечно, зависит от вас.
Как узнать версию opengl на андроид
Наверно можно через уровень API.
А потом в зависимости от API версию GL
OpenGL ES 1.0 and 1.1 — This API specification is supported by Android 1.0 and higher.
OpenGL ES 2.0 — This API specification is supported by Android 2.2 (API level 8 ) and higher.
OpenGL ES 3.0 — This API specification is supported by Android 4.3 (API level 18 ) and higher.
OpenGL ES 3.1 — This API specification is supported by Android 5.0 (API level 21) and higher.
| 10.01.2017, 11:37 | #3 |
| 10.01.2017, 11:44 | #4 |
Наверно можно через уровень API.
А потом в зависимости от API версию GL
OpenGL ES 1.0 and 1.1 — This API specification is supported by Android 1.0 and higher.
OpenGL ES 2.0 — This API specification is supported by Android 2.2 (API level 8 ) and higher.
OpenGL ES 3.0 — This API specification is supported by Android 4.3 (API level 18 ) and higher.
OpenGL ES 3.1 — This API specification is supported by Android 5.0 (API level 21) and higher.
Обновление OpenGL ES на Android

В девайсах, где в качестве операционной системы установлен Android, есть мало возможностей для обновления софта графической подсистемы – единственным официальным методом можно назвать только установку свежей версии прошивки.
Также в интернете можно наткнуться на инструкции по обновлению драйверов видеоускорителя на смартфоне или планшете. Назвать этот метод откровенным обманом нельзя – действительно, некоторые устройства (чаще всего с чипсетами Qualcomm) и правда поддерживают такую возможность, но при условии наличия root-доступа и стороннего рекавери. Однако в большинстве случаев под видом драйверов распространяется вредоносное ПО, особенно если предлагается загрузить APK-файл, поэтому будьте бдительны и при малейших сомнениях откажитесь от использования этого метода.
Вариант 2: Эмуляторы Android
Для программ-эмуляторов «зелёного робота» ситуация выглядит иначе. Дело в том, что в приложениях вроде Bluestacks и подобных ему в качестве графического ускорителя виртуального устройства задействуется видеокарта компьютера, где ПО и установлено. Следовательно, уровень используемого эмулятором OpenGL зависит от поддерживаемого GPU. Просмотреть текущий можно посредством специальной утилиты, например, GPU Caps Viewer.

-
Рассматриваемый софт поставляется в двух вариантах – полный установщик и портативная версия. Для нашей цели достаточно второго, он обозначен ссылкой с «(zip)» в имени.



Если этот уровень ниже 4.0, поднять его можно с помощью установки свежей версии драйверов – подробности процедуры для разных типов видеокарт есть в инструкции по ссылке далее.
Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.