OpenGL ES 2.0 对 Android 的支持? [英] OpenGL ES 2.0 Support for Android?
问题描述
Android 模拟器是否支持 OpenGL ES 2.0?我看到有些人说是的,但你必须更改一些设置."我也看过不,它不支持它,句号."以下是我为尝试纠正问题所做的工作,包括我收到的一些错误消息.
Does the Android emulator support OpenGL ES 2.0? I've seen some people say "Yes, but you have to change a few settings." and I've also seen "No, it doesn't support it, period." Here's what I've done to try and correct the problem, including some error messages that I got.
首先,我修改了 AndroidManifest.xml 以包含以下代码:
First, I modified the AndroidManifest.xml to contain the following code:
<uses-feature
android:glEsVersion="0x00020000" />
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
然后,当我想实例化我的 GLSurfaceView 时,我使用以下代码序列来实例化它:
Then, when I want to instantiate my GLSurfaceView, I use this sequence of code to instantiate it:
super(context);
setEGLContextClientVersion(2);
setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
然后,我到处都说你必须进入 AVD 管理器,选择模拟器,进入硬件",添加GPU 仿真"并将布尔值设置为是".然而,当我看到我的时,这是我看到的:
Then, everywhere I looked said that you must go into the AVD Manager, select the emulator, go to "Hardware", add "GPU emulation" and set the boolean to "yes". However, here is what I see when I look at mine:
奇怪的是,我的 AVD 管理器中有另一个模拟器,其中有硬件"表:
What's peculiar is that I have another emulator in my AVD Manager of which I do have the "Hardware" table:
为了准确地向您展示我在做什么,这里有一些代码可以做一些我想在 OpenGL ES 2.0 中做的事情(我主要是从 Android 自己的教程中得到的):
And just to show you exactly what I'm doing, here's some code that does some stuff I want to do in OpenGL ES 2.0 (I mainly got this from Android's own tutorials):
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);
我不想将我的代码改回使用 OpenGL ES 1.0,因为这需要很多麻烦,如果我能避免它,我会的.
I don't want to change my code back to work with OpenGL ES 1.0 because that will require a lot of headaches and if I can avoid it, I will.
最后,当我尝试运行我的程序时,程序关闭并显示以下窗口:不幸的是,已停止."这是 LogCat 告诉我的:
Finally, when I try running my program, the program closes with the window: "Unfortunately, has stopped." This is what LogCat told me:
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)
推荐答案
我可以回答你的问题.Android 模拟器支持 OpenGL ES 2.0.我用 cocos2d-x v.2(它使用 OpenGL ES 2.0)创建了一个应用程序.我有同样的 FATAL EXCEPTION: GLThread 81 error with same stack.我通过添加解决了这个问题
I can say Yes on your question. Android emulator supports OpenGL ES 2.0. I created an app with cocos2d-x v.2 (which uses OpenGL ES 2.0). I had same FATAL EXCEPTION: GLThread 81 error with same stack. I solved this issue by adding
gLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);
设置渲染器之前 setRenderer:
before setting renderer setRenderer:
gLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());
现在我可以在 Android 模拟器上运行我的应用了.
Now I can run my app on Android emulator.
在 https://stackoverflow.com/a/13719983/307547 上查看我的问题和答案.我在此链接上的帖子包含带有 AVD 设置的屏幕截图:
See my question and answer at https://stackoverflow.com/a/13719983/307547. My post on this link contains screenshot with AVD settings:
http://www.cocos2d-x.org/boards/6/topics/12563?r=19274#message-19274
这篇关于OpenGL ES 2.0 对 Android 的支持?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!