我的应用程序需要在启动之前检查一些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上下文?什么是最简单的方法呢?
答案 0 :(得分:1)
首先,这可能不是升级问题,而是特定于设备的问题。也许(你的数千个设备模型中没有足够的统计数据), glGetString()的这种行为不太可能在旧模型上发生,但这种知识不值得寻求,无论如何都无法解决问题。
khronos wiki解释了所有OpenGL函数都需要实时渲染GL上下文,但在没有这样的上下文的情况下调用时,返回非NULL并不违反其中一些函数。
即使这样,我们遇到了一些为 glGetString(GLES20.GL_RENDERER)返回NULL的设备;它们有不同的制造商,平台级别等。我们的Crashlytcis数据并不表明这种行为对同一设备是一致的。
因此,我们不得不使用后备,以便当此函数返回 null 时应用程序不会崩溃。