我正在尝试设置一个Android模拟器,以便在其上使用OpenGL ES,但我被这样一个事实所困扰:每次我运行我的程序时,它都会毫不客气地手榴弹。问题(至少是日志中第一个令人讨厌的红色错误行)是一个名为libhgl.so的缺失包。这是在Android设备上运行OpenGL ES所需的OpenGL驱动程序文件,但由于某些原因,我的模拟器没有它。有谁知道我可以在哪里获得模拟器的驱动程序,或者如何获得已经拥有它们的模拟器?
答案 0 :(得分: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.
我想这表明丢失的文件只存在于设备本身上,但是应用程序应该在模拟器上运行软件驱动程序。 Android模拟器上的OpenGL应用程序网络上的大量屏幕截图也表明OpenGL在模拟器上应该可以正常工作。您无法获得OpenGL的任何其他可能原因?
答案 1 :(得分:3)
加载EGL用户空间驱动程序的逻辑是在frameworks / native / opengl / libs / EGL / Loader.cpp中。基本上有三种情况:
ADT附带的仿真器在案例2中效果不佳。但近年来仿真器得到了改进。您可以使用最新的Android Studio,它具有更好的模拟器或leapdroid http://www.leapdroid.com/