G B*_*G B 4 java android opengl-es
我的应用程序需要在启动之前检查某些 OpenGL ES 功能的可用性。
这是通过以下 Java 代码完成的:
String extensions = GLES20.glGetString( GLES20.GL_EXTENSIONS );
Run Code Online (Sandbox Code Playgroud)
它可以在 Android 4.4 版本之前运行,但现在返回 null,日志显示
10-28 17:53:49.475: E/libEGL(8930): call to OpenGL ES API with no current context (logged once per thread)
Run Code Online (Sandbox Code Playgroud)
在 Android 5.0 上如何获取此信息?我需要创建新的 OpenGL ES 上下文吗?最简单的方法是什么?
首先,这可能不是升级问题,而是特定于设备的问题。也许(你的确实没有足够的跨数千种设备型号的统计数据),glGetString()的这种行为在旧型号上不太可能发生,但这样的知识不值得寻求,对无论如何解决问题。
khronos wiki解释说,所有 OpenGL 函数都需要实时渲染 GL 上下文才能工作,但其中一些函数在没有此类上下文的情况下调用时返回非 NULL 并不违反。
即便如此,我们还是遇到了一些设备为glGetString(GLES20.GL_RENDERER)返回 NULL ;它们具有不同的制造商、平台级别等。我们的 Crashlytcis 数据并不表明这种行为对于同一设备是一致的。
因此,我们必须采用后备措施,以便当该函数返回null时应用程序不会崩溃。