我正在尝试按照基本教程学习 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
有谁之前经历过这个吗?