簡體   English   中英

對glGetString()的靜態調用在Android 5.0中返回null

[英]Static call to glGetString() returns null in Android 5.0

我的應用程序需要在啟動之前檢查一些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上下文? 什么是最簡單的方法呢?

首先,這可能不是升級問題,而是特定於設備的問題。 也許(你的數千個設備模型中沒有足夠的統計數據), glGetString()的這種行為不太可能發生在舊模型上,但這種知識不值得尋求,它沒有幫助無論如何解決問題。

khronos wiki解釋說,所有OpenGL函數都需要實時渲染GL上下文,但是在沒有這樣的上下文的情況下調用時,返回非NULL並不違反其中一些函數。

您可以在此處此處找到初始化代碼的示例。

即使這樣,我們遇到了一些為glGetString返回NULL的設備(GLES20.GL_RENDERER) ; 這些具有不同的制造商,平台級別等。我們的Crashlytcis數據並未表明此行為對於同一設備是一致的。

因此,我們必須使用回退,以便當此函數返回null時應用程序不會崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM