我正在运行一个Android 虚拟设备 https://developer.android.com/studio/run/managing-avds.html在我的 Ubuntu 主机上。
它使用 CPU/ABI Intel Atom (x86),我使用主机 GPU。
模拟器正在使用基于内核的虚拟机 https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine.
只要我使用 OpenGL ES2 上下文,这就会非常有效。
但是,如果我的应用程序尝试创建 OpenGL ES3 上下文,则使用...
const EGLint contextAttribs[] = {
EGL_CONTEXT_CLIENT_VERSION, 3,
EGL_NONE
};
context = eglCreateContext(display, config, NULL, contextAttribs);
...然后我得到一个EGL_BAD_CONFIG error:
I/biplane ( 2839): EGL: vendor Android version 1.4 Android META-EGL
I/biplane ( 2839): EGL: client apis OpenGL_ES
I/biplane ( 2839): number of EGL configurations that match our preferred criteria: 1
I/biplane ( 2839): R8 G8 B8 A8 DEPTH24
E/EGL_emulation( 2839): tid 2852: eglCreateContext(919): error 0x3005 (EGL_BAD_CONFIG)
在硬件移动设备上请求 ES3 效果很好。
但是当从模拟器请求它时,它失败了。
从 glxinfo 可以看出,主机完全能够执行 OpenGL ES3.0、ES3.1 和 ES3.2:
$ glxinfo | grep ES3
GL_ARB_ES2_compatibility, GL_ARB_ES3_1_compatibility,
GL_ARB_ES3_2_compatibility, GL_ARB_ES3_compatibility,
GL_NV_ES3_1_compatibility, GL_NV_bindless_multi_draw_indirect,
GL_ARB_ES2_compatibility, GL_ARB_ES3_1_compatibility,
GL_ARB_ES3_2_compatibility, GL_ARB_ES3_compatibility,
GL_NV_ES3_1_compatibility, GL_NV_bindless_multi_draw_indirect,
有没有办法在 kvm 之上的 Android 虚拟设备上运行 OpenGL ES3 应用程序?