OpenGL ES 2.0支持Android?

Tha*_*zer 15 android-emulator opengl-es-2.0

我已经看到了这个主题的多重看法,它开始让我感到困惑.我真的希望有人能给我一个明确的答案!:)

我想直言不讳:Android模拟器是否支持OpenGL ES 2.0?我见过有人说"是的,但你必须改变一些设置." 而且我也看过"不,它不支持它,期间." 以下是我尝试解决问题所做的工作,包括我收到的一些错误消息.

首先,我修改了AndroidManifest.xml以包含以下代码:

<uses-feature 
    android:glEsVersion="0x00020000" />

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="17" />
Run Code Online (Sandbox Code Playgroud)

然后,当我想实例化我的GLSurfaceView时,我使用这段代码来实例化它:

super(context);

setEGLContextClientVersion(2);

setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
Run Code Online (Sandbox Code Playgroud)

然后,我看到的任何地方都说你必须进入AVD管理器,选择模拟器,转到"硬件",添加"GPU模拟"并将布尔值设置为"是".然而,这是我看到我时所看到的:

我的Android 4.2模拟器窗口的屏幕截图.

特别的是我在AVD Manager中有另一个模拟器,我有"硬件"表:

我的Android 2.2模拟器有什么硬件表?

只是为了向您展示我正在做的事情,这里有一些代码可以完成我想在OpenGL ES 2.0中做的一些事情(我主要从Android自己的教程中得到这个):

int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);

program = GLES20.glCreateProgram();
GLES20.glAttachShader(program, vertexShader);
GLES20.glAttachShader(program, fragmentShader);
GLES20.glLinkProgram(program);
Run Code Online (Sandbox Code Playgroud)

我不想改变我的代码回到使用OpenGL ES 1.0,因为这将需要很多麻烦,如果我可以避免它,我会.

最后,当我尝试运行我的程序时,程序以窗口关闭:"不幸的是,已经停止了." 这就是LogCat告诉我的:

12-05 06:16:27.165: E/AndroidRuntime(936): FATAL EXCEPTION: GLThread 81
12-05 06:16:27.165: E/AndroidRuntime(936): java.lang.IllegalArgumentException: No config chosen
12-05 06:16:27.165: E/AndroidRuntime(936):  at    android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:874)
12-05 06:16:27.165: E/AndroidRuntime(936):  at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1024)
12-05 06:16:27.165: E/AndroidRuntime(936):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1401)
12-05 06:16:27.165: E/AndroidRuntime(936):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
Run Code Online (Sandbox Code Playgroud)

我会说我根本不是这方面的专家,这是我第一次使用OpenGL.如果有人对我能做些什么来解决这个问题有任何想法,我将永远感激不尽.:) 谢谢!

Pet*_*etr 16

我可以在你的问题上说"是".Android模拟器支持OpenGL ES 2.0.我用cocos2d-x v.2(使用OpenGL ES 2.0)创建了一个应用程序.我有同样的致命异常:相同堆栈的GLThread 81错误.我通过添加解决了这个问题

gLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);
Run Code Online (Sandbox Code Playgroud)

在设置渲染器setRenderer之前:

gLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());
Run Code Online (Sandbox Code Playgroud)

现在我可以在Android模拟器上运行我的应用程序了.

请访问/sf/answers/960398841/查看我的问题和答案 .此链接上的帖子包含AVD设置的屏幕截图:

http://www.cocos2d-x.org/boards/6/topics/12563?r=19274#message-19274

  • 请注意,硬件GPU加速仅适用于Android 4.0及更高版本的AVD.使用Android 2.2的AVD不会加速OpenGL ES 2.0 (2认同)

小智 5

我刚刚修复了问题而没有在源代码中添加任何新行.在avd-manager中,我为我的模拟器设备设置了"使用主机GPU".在我的Geforce GTX 570上完美运行.

仿真器设备上的API级别为16,Manifest中的min-SDK为15.