我知道模拟器自SDK工具17和Android 4.0.3推出以来已支持OpenGL ES 2.0,但这是在2012年4月引入的。
安卓模拟器是否支持OpenGL ES 3.0,还是我们仍在等待?
如果不支持,那么其他第三方模拟器/仿真器(例如Genymotion)是否支持OpenGL ES 3.0?
我知道模拟器自SDK工具17和Android 4.0.3推出以来已支持OpenGL ES 2.0,但这是在2012年4月引入的。
安卓模拟器是否支持OpenGL ES 3.0,还是我们仍在等待?
如果不支持,那么其他第三方模拟器/仿真器(例如Genymotion)是否支持OpenGL ES 3.0?
最新的Android模拟器现在支持OpenGL ES 3.0。要使用OpenGL ES 3.0,您的开发计算机需要具有支持Microsoft® Windows®或Linux上OpenGL 3.2或更高版本的主机GPU显卡。
请参见:https://android-developers.googleblog.com/2017/05/android-studio-3-0-canary1.html
从NDK中的gles3jni
示例应用程序是尝试它的一个不错的选择。
如果出现以下情况:
java.lang.RuntimeException: createContext failed: EGL_BAD_CONFIG
同时尝试在主机上首先运行:
echo "GLESDynamicVersion = on" >> ~/.android/advancedFeatures.ini
开发人员目前正在列出支持的主机GPU,这将覆盖它,参见:https://issuetracker.google.com/issues/68496715
package com.example.opengltest;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ConfigurationInfo;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class OpenGLESVersionActivity extends Activity {
private static final String TAG = "OpenGLESVersionActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActivityManager activityManager =
(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final ConfigurationInfo configurationInfo =
activityManager.getDeviceConfigurationInfo();
String versionText = "Device Supported OpenGL ES Version = " + configurationInfo.getGlEsVersion();
Toast.makeText(this, versionText, Toast.LENGTH_LONG).show();
Log.d(TAG, versionText);
}
}
glGetString(GLES20.GL_VERSION)
找到了模拟器支持的版本。看起来,我测试的模拟器不支持OpenGL ES 3.0或更高版本,但我不想假设它们所报告的就是它们实际支持的,因此我不能保证这个结论是最终的。OpenGL ES 3.0 V@104.0 AU@ (GIT@Id3510ff6dc)
使用HAXM的Android模拟器:
OpenGL ES 2.0 (2.1 NVIDIA-10.2.7 310.41.25f01)
Genymotion模拟器:
OpenGL ES 2.0 (2.1 NVIDIA-10.2.7 310.41.25f01)