Ich schreibe eine Android OpenGL ES-Anwendung, die möglicherweise viele Ressourcen, Texturen, Shader usw. laden wird. Normalerweise wird der EGLContext beim Löschen der Ansicht verworfen, z. B. wenn sich die Bildschirmausrichtung ändert. Da es sehr viel Zeit in Anspruch nehmen kann, alle notwendigen Ressourcen in OpenGL zu laden, die Shader zu kompilieren, Mipmaps zu generieren, etc., suche ich nach einer Möglichkeit, den EGL-Kontext über Bildschirmorientierungsänderungen hinweg beizubehalten, so dass dies nicht geschieht muss jedes Mal durchgeführt werden, wenn das Gerät gedreht wird.Android: EGLContext über die Bildschirmrotation hinweg konservieren
Weitere Informationen: Ich verwende GLSurfaceView. Ich habe versucht, eine benutzerdefinierte EGLContextFactory zu implementieren, die einen EGLContext erstellt und jedes Mal den gleichen Kontext an die neue GLSurfaceView zurückgibt. Wenn sich das Gerät jedoch dreht, wird ein Fehler von EGL_BAD_CONTEXT ausgelöst, vermutlich weil die alte Ansicht nicht mehr vorhanden ist oder weil die neue Ansicht nicht mit der übereinstimmt, für die der EGLContext erstellt wurde.
Es muss eine Möglichkeit geben, den Kontext zu speichern. Leider ist die EGLContext-API sehr minimal und erlaubt Ihnen nicht, den einmal erstellten Kontext zu ändern. Gibt es zum Beispiel die Möglichkeit, die Oberfläche, auf die der Kontext verweist, über mehrere Ansichten hinweg zu teilen?