Вопрос по android, opengl-es – Отсутствуют драйверы OpenGL на эмуляторе Android

4

Я пытаюсь настроить эмулятор Android, чтобы поиграть с OpenGL ES на нем, но я зашел в тупик из-за того факта, что каждый раз, когда я запускаю на нем свою программу, он бесцеремонно подрывает гранаты. Проблема (по крайней мере, первая неприятная красная строка ошибки в журнале) - отсутствующий пакет с именем libhgl.so. Это файл драйвера OpenGL, необходимый для запуска OpenGL ES на устройствах Android, но по какой-то причине в моем эмуляторе его нет. Кто-нибудь знает, где я могу получить драйверы для эмулятора или как получить эмулятор, который уже имеет их?

Ваш Ответ

2   ответа
4

По этой ссылке:

http://osdir.com/ml/android-porting/2009-06/msg00282.html

это говорит:

libEGL.so and libGLESv2.so implements EGL and OpenGL ES through
libhgl.so and libagl.so. That is, libhgl.so and libagl.so are
dlopen()ed by libEGL.so. All EGL and OpenGL ES calls will finally call
into libhgl.so and/or libagl.so.

и здесь:

http://osdir.com/ml/android-porting/2009-06/msg00288.html

libagl.so is an pure software impl. For your accelerated impl., you
need to provide libhgl.so so that libEGL.so will be able to use it. It
is expected that libhgl.so implements and exports both eglXXX and glXXX
symbols.

Я предполагаю, что это означает, что отсутствующий файл будет существовать только на самом устройстве, но приложение должно работать с программным драйвером на эмуляторе. Многочисленные скриншоты в Интернете приложений OpenGL на эмуляторе Android также указывают на то, что OpenGL должен нормально работать на эмуляторе. Есть ли другие возможные причины, по которым вы не можете запустить OpenGL?

Я думаю, что вижу то, что вы говорите ... libhgl.so - аппаратная реализация и не будет присутствовать в эмуляторе. Программа даже не должна его искать. Я немного подумаю и посмотрю, смогу ли я найти то, что ищет libhgl, и постараюсь либо избавиться от него, либо указать на libagl. iandisme
Да, но из того, что я видел в Интернете, тот факт, что он не находит, что это не обязательно остановит запуск вашей программы, предполагая, что она может найти программную реализацию и разрешить вместо этого отсутствующие функции для этой библиотеки. Я согласен, это действительно не должно выглядеть, если не нужно, но, может быть, именно так они это реализовали? То есть продолжайте пробовать libs, пока символ не разрешится?
3

Логика загрузки драйвера пространства пользователя EGL находится в frameworks / native / opengl / libs / EGL / Loader.cpp. В основном есть три случая:

  1. Running with emulator in software rendering mode
  2. Running with emulator in OpenGL mode. This is where libhgl.so is loaded for earlier version of Android.
  3. Running with actual device.

Эмулятор, поставляемый с ADT, не работает хорошо для случая 2. Но эмуляторы улучшены за последние годы. Вы можете использовать последнюю версию Android Studio, которая имеет лучший эмулятор или leapdroid наhttp://www.leapdroid.com/

Похожие вопросы