在Android模拟器上缺少OpenGL驱动程序

时间:2009-07-11 17:20:33

标签: android opengl-es

我正在尝试设置一个Android模拟器,以便在其上使用OpenGL ES,但我被这样一个事实所困扰:每次我运行我的程序时,它都会毫不客气地手榴弹。问题(至少是日志中第一个令人讨厌的红色错误行)是一个名为libhgl.so的缺失包。这是在Android设备上运行OpenGL ES所需的OpenGL驱动程序文件,但由于某些原因,我的模拟器没有它。有谁知道我可以在哪里获得模拟器的驱动程序,或者如何获得已经拥有它们的模拟器?

2 个答案:

答案 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中。基本上有三种情况:

  1. 以软件渲染模式运行模拟器
  2. 在OpenGL模式下使用模拟器运行。这是为早期版本的Android加载libhgl.so的地方。
  3. 使用实际设备运行。
  4. ADT附带的仿真器在案例2中效果不佳。但近年来仿真器得到了改进。您可以使用最新的Android Studio,它具有更好的模拟器或leapdroid http://www.leapdroid.com/