对glGetString()的静态调用在Android 5.0中返回null

时间:2014-10-28 17:24:45

标签: java android opengl-es

我的应用程序需要在启动之前检查一些OpenGL ES功能的可用性。

使用以下Java代码完成此操作:

String extensions = GLES20.glGetString( GLES20.GL_EXTENSIONS );

它适用于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)

如何在Android 5.0上获取此信息?我是否需要创建新的OpenGL ES上下文?什么是最简单的方法呢?

1 个答案:

答案 0 :(得分:1)

首先,这可能不是升级问题,而是特定于设备的问题。也许(你的数千个设备模型中没有足够的统计数据), glGetString()的这种行为不太可能在旧模型上发生,但这种知识不值得寻求,无论如何都无法解决问题。

khronos wiki解释了所有OpenGL函数都需要实时渲染GL上下文,但在没有这样的上下文的情况下调用时,返回非NULL并不违反其中一些函数。

您可以找到初始化代码herehere的示例。

即使这样,我们遇到了一些为 glGetString(GLES20.GL_RENDERER)返回NULL的设备;它们有不同的制造商,平台级别等。我们的Crashlytcis数据并不表明这种行为对同一设备是一致的。

因此,我们不得不使用后备,以便当此函数返回 null 时应用程序不会崩溃。