2011-08-05 40 views
0

對於我們在Android OS上的遊戲,我們主要使用ndk來編寫我們的遊戲和一個薄的Java包裝,因此我們可以支持所有使用gles 2.0硬件的設備。在gl上下文銷燬後的空白屏幕onResume(Android)

我們的實現是非常標準的,使用GLSurfaceView的覆蓋我們: *創建/恢復的C遊戲++部分onSurfaceChanged(), *渲染onDrawFrame(), *告知發動機大約在destroyContex失去GL上下文(),通常在應用程序暫停或遭到破壞時發生。當onSurfaceChanged()和第一個onDrawFrame之間的時間間隔,雖然屏幕是黑色的,但是我們可以通過調用onSurfaceChanged()和onDrawFrame之間的時間間隔來重新加載gl上下文(onSurfaceChanged但我注意到有不少3D遊戲沒有這種問題(例如Gun Bros),他們也似乎沒有重新加載資源(除非他們擁有所有內存並快速重新加載它們)。

有關這是爲什麼發生的任何信息?

回答

0

只是一個想法,但如果你在使用glConadPixels或類似的方法在destroyContext()上轉儲屏幕,然後你在onSurfaceChanged()上做的第一件事是上傳並繪製,你將在用戶之前顯示一個有效的圖像你的第一個onDrawFrame。

+0

不幸的是,'onDestroyContext'被稱爲_after_上下文已被銷燬,所以任何的gl調用都會在此時產生錯誤。我開始認爲每個人都在使用一個經過修改的GLSurfaceView,最終證明它很容易做到;但最終是可能引發問題的黑客攻擊。 – MichalisB