今天有多少 Android 设备支持 GLSurfaceView.setPreserveEGLContextOnPause?

How many Android devices support GLSurfaceView.setPreserveEGLContextOnPause today?

我不需要确切的数字,百分比就足够了。 例如,如果我使用 4.0 min SDK 版本开发一个应用程序,我如何确保上下文将被保留?可能取决于 OpenGL-ES 版本?

我尝试查找有关 EGL 上下文有限的芯片的信息,但找不到任何信息。

我需要知道的原因 - 我不想实现一个特殊的缓存子系统,它会在应用程序恢复后重新加载我的纹理。我准备放弃一些不支持保留上下文的设备(如果少于 5-7%)。

因为 API 功能是 11 级,所以 Honeycomb。根据 Android 网站,其 94.0% 的设备 Android Platform versions

似乎 OpenGL-ES 2.0 和 forward 都允许多个 EGL 上下文。这就是 GLSurfaceView.GLThreadManager.checkGLESVersion() 方法所假定的。并且如果你有多个上下文,暂停时不需要终止EGL,也不需要在暂停时释放EGL上下文。

此外,从 GLSurfaceView.GLThreadManager 源代码(大约第 1908 行),我们有以下评论,就在 checkGLESVersion() 方法之后:

// This check was required for some pre-Android-3.0 hardware. 
// Android 3.0 provides support for hardware-accelerated views, 
// therefore multiple EGL contexts are supported on all Android 3.0+ EGL drivers.

在 Grepcode GLSurfaceView.GLThreadManager 上查看更多详细信息。