1

我正在尝试按照基本教程学习 OpenGL ES 2.0

http://www.droidnova.com/android-3d-game-tutorial-part-ii,328.html

这是我的 GLSurfaceView 派生的构造函数

public FirstOpenGLSurfaceView(Context context){
        super(context);
        // Set the Renderer for drawing on the GLSurfaceView
        setEGLContextClientVersion(2);
        _renderer = new FirstOpenGLRenderer();
        setRenderer(_renderer);
    }

经过一些实验,我得出的结论是,如果发出对 seteglcontextclientversion(2) 的调用,项目将无法正常运行(注释掉这行代码并且渲染工作。)每当尝试时,Logcat 都会指示“调用未实现的 OpenGL ES API”运行上述方法。

我已经更新了清单并遵循了这篇文章中的所有建议......(包括 manifest.xml 设置)

Android:GLES20:调用未实现的 OpenGL ES API

我听说这可能表明 OpenGL ES 2.0 在有问题的设备上不可用(或者正在使用模拟器。)我不相信在这种情况下这是真的,因为当我运行以下代码时...(在一些教程中找到,我相信这段代码说的是实话)

// Check if the system supports OpenGL ES 2.0.
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000;

supportsEs2 的值为“true”,这适用于三个独立的设备,即

  • 三星 Galaxy Tab 10.1 - 带有 2.6.36.4 内核的 Android 3.2
  • 谷歌 Nexus S - Android 4.0.4 - 内核 3.0.27
  • 三星 Galaxy S3 - 带有内核 3.0.15 的 Android 4.0.4

有谁之前经历过这个吗?

4

1 回答 1

0

我在 XOLO a500s 上也遇到了同样的问题,使用setEGLConfigChooser()解决了我的问题:

myGLSurface.setEGLConfigChooser(5, 6, 5, 0, 24, 8);
myGLSurface.setEGLContextClientVersion(2);
myGLSurface.setRenderer(new MyGLRenderer());

我从哪里得到的值setEGLConfigChooser(redSize, greenSize, blueSize, alphaSize, depthSize, stencilSize)

http://gfxbench.com/result.jsp

于 2014-05-14T14:52:46.370 回答