代码之家  ›  专栏  ›  技术社区  ›  iandisme

Android Emulator上缺少OpenGL驱动程序

  •  4
  • iandisme  · 技术社区  · 15 年前

    我正试图建立一个安卓仿真器来在上面玩OpenGLES,但是我被这样一个事实所困扰:每次我在上面运行我的程序,它都会肆无忌惮地手榴弹。问题(至少是日志中第一条令人讨厌的红色错误行)是一个名为libhgl.so的包丢失。这是在Android设备上运行OpenGL ES所需的OpenGL驱动程序文件,但出于某种原因,我的模拟器没有它。有人知道我在哪里可以得到模拟器的驱动程序,或者如何得到已经有驱动程序的模拟器吗?

    2 回复  |  直到 8 年前
        1
  •  4
  •   Marius Kjeldahl    15 年前

    在这个环节中:

    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应用程序网络上的大量截图也表明OpenGL在仿真器上应该可以正常工作。还有什么其他可能的原因导致你不能使用OpenGL吗?

        2
  •  3
  •   Le Yang    8 年前

    加载egl用户空间驱动程序的逻辑位于frameworks/native/opengl/libs/egl/loader.cpp。基本上有三种情况:

    1. 在软件呈现模式下使用模拟器运行
    2. 在OpenGL模式下使用模拟器运行。这是为早期版本的Android加载libhgl.so的地方。
    3. 使用实际设备运行。

    随ADT一起提供的模拟器在案例2中不能很好地工作。但近年来仿真器得到了改进。您可以使用最新的Android Studio,它在 http://www.leapdroid.com/