2015-04-17 7 views
5

Gibt es einen Rückruf, um benachrichtigt zu werden, nachdem der OpenGL-Kontext verloren gegangen ist?LibGDX: Wie kann man zuverlässig feststellen, ob der OpenGL-Kontext verloren gegangen ist?

Ich habe ApplicationListener/Game.resume() versucht, aber (auf Android) gibt es einige Fälle, in denen resume() aufgerufen wird, obwohl der Kontext nicht verloren ging. Sowie einige andere Fälle, in denen der Kontext verloren ging, aber resume() wurde überhaupt nicht aufgerufen.

Was ist der richtige Weg, zuverlässig festzustellen, ob der openGL-Kontext in libGDX verloren gegangen ist?

Antwort

0

Es gibt keine einfache solution für eine App mit verwalteten und nicht verwalteten/dynamischen Texturen. Der Artikel erklärt, warum Sie nicht wirklich einen Auslöser bekommen können. Ich würde empfehlen, AssetManager zu verwenden, so können Sie Update Ihr Vermögen auf ApplicationListener der Lebenslauf Methode. Sie sollten beide Links besuchen und lesen.

0

Es ist sehr unwahrscheinlich, dass Sie jemals einen Kontextverlust haben werden. Eine genauere Erklärung finden Sie unter this post. Aber selbst wenn Sie einen Kontextverlust haben (was nur auf sehr alten Android-Geräten mit Android 2.x passieren würde), dann wird libGDX sich darum kümmern und die Ressourcen für Sie wiederherstellen. Sie müssen dafür nichts tun.

Es ist wahrscheinlicher, dass Sie irgendwie "denken", dass Sie einen Kontextverlust haben, während Sie in Wirklichkeit ein anderes Problem haben. Zum Beispiel ist der häufigste Grund für Menschen, zu denken, dass sie einen Kontextverlust haben, wenn sie static Ressourcen verwenden. Z.B. durch Verwenden des Singleton-Musters mit verzögerter Initialisierung.

Natürlich, ohne jeden Code zu sehen, ist dies nur raten.