Ich habe dieses Problem für eine Weile in meiner Anwendung gesehen. Es zeigt sich durch zufälliges Fixieren oder Neustarten von HTC-Telefonen, wenn sie mit OpenGL gerendert werden. Wenn Sie das Logcat überprüfen, scheint es sich um ein Deadlock-Problem zu handeln, da Sie dieses ausgedruckt sehen werden ...
%Vor%Die beste Quelle für Informationen, die ich bisher finden konnte, ist hier: Ссылка
Wo schlagen sie vor, ein glFinish am Ende der OnDraw-Funktion Ihrer glSurface hinzuzufügen. Ich habe keine guten Ergebnisse mit dieser Lösung (es stürzt immer noch, aber weniger oft). Hat jemand anderes von diesem Problem gehört? Haben Sie bessere Lösungen gefunden?
Wir haben genau dieses Problem bei unserem Spiel mit HTC Sensation-Geräten und Android 2.3.4 bekommen - also sind wir gegangen und haben das Gerät gekauft und ein bisschen experimentiert. Eine der Lösungen war, egl.eglWaitGL()
am Ende der onDraw()
-Methode aufzurufen, aber das halbierte die Framerate - überraschenderweise nur auf diesem Gerät, aber ich hielt es für eine schlechte Lösung und schaute weiter.
Der zweite Fix und der, den wir gerade verwenden, der fast keine Leistungseinbußen hatte, war die Verwendung von glBufferSubData
, um unsere Vertex-Arrays zu aktualisieren und das gesamte Array mit glBufferData
hochzuladen. Wenn Sie VBOs und glBufferSubData verwenden, um sie zu aktualisieren, versuchen Sie es zu ändern.
Tags und Links android opengl-es htc-android