我發現當我啓用此開發人員選項時,我的OpenGL項目停止工作。有點令人擔憂的是,至少可以說。Android ICS:系統「強制GPU渲染」選項實際上做了什麼?
logcat中顯示了這些數不勝數:
E/libEGL (1022): called unimplemented OpenGL ES API
E/libEGL (1022): called unimplemented OpenGL ES API
E/libEGL (1022): called unimplemented OpenGL ES API
...
的第一個場景渲染得很好,不過這首先swapbuffers()
後,所有susbequent GL ES的API(甚至glSetMatrixMode()
)做什麼,但登錄 「未實現的API」。
如果我的「強制GPU渲染」選項關閉,這一切都可以很好地工作(即實現)。
那麼,這個選項實際上做了什麼?
這對我來說已經足夠接近了,符合觀察以及我在別處學到的知識。我收到了來自Android圖形人員Romain Guy的推文......他說,如果OpenGL應用程序在主UI線程上創建EGL上下文,它將只會遇到這個問題。所有GL調用都在專用線程上運行更爲常見,這是我不喜歡的一個習慣,因爲太無聊了。 – 2011-12-29 14:24:41
@ReubenScratton我在這裏有完全相同的問題,我也在主線程上創建EGL上下文。你有沒有找到一個解決方案,或者你最終使用一個單獨的線程的GL? – 2013-04-12 11:42:29
我最終創建了一個專用渲染線程並將所有GL代碼移入其中。這對於我的需求來說太過於誇張了,大概是你的,但這個特定的操作系統特性假設所有GL應用程序都呈現出主線程,我們必須遵循這一點。 – 2013-04-12 12:22:45