Jeder ist mit einem eigenen EGLContext konstruiert. Die Verwendung desselben Kontexts über mehrere GLSurfaceViews
hinweg, um Zugriff auf die gleichen Texturen zu haben, scheint nicht auf allen GPUs zu funktionieren (wie gezeigt here).Android: Eine Textur zwischen GLSurfaceViews in separaten EGL-Kontexten freigeben
Meine Frage ist, ob es eine Möglichkeit gibt, eine GL_TEXTURE_EXTERNAL_OES
Textur über mehrere GLSurfaceViews
mit ihren Standardkontexten zu teilen. Standardmäßig ist nur der Thread, der die GL_TEXTURE_EXTERNAL_OES
erstellt, in der Lage, auf die Textur zuzugreifen, aber ich suche nach einer Möglichkeit, die anderen Threads in separaten EGL-Kontexten aus dieser Textur lesen zu lassen und sie dann in ihre separate GLSurfaceViews
zu rendern.
Jede Anleitung wäre willkommen. Vielen Dank.
Super, danke Fadden! Ich habe zuerst versucht, 'GLSurfaceViews' zu verwenden, aber der Code war wirklich unordentlich, da es keine integrierte API-Unterstützung dafür gibt. Ich werde mit dem üblichen "SurfaceView" -Ansatz fortfahren. Übrigens, kennen Sie Open-Source-Projekte, die etwas ähnliches tun (z. B. einen EGLC-Text mit einem ordenartigen SurfaceView erstellen)? Das ähnlichste, was Grafika zu bieten scheint, ist https://github.com/google/grafika/blob/master/src/com/android/grafika/HardwareScalerActivity.java – Michael
Grafika verfügt über mehrere Aktivitäten, die auf SurfaceView mit GLES gerendert werden. Ich würde empfehlen, nur das gesamte com.android.grafika.gles Paket anzuheben; Wenn Sie mit externen Texturen arbeiten, werden Sie wahrscheinlich auch einige der anderen Bits haben wollen. "Textur von Kamera" und "Record GL App" sind weitere Beispiele. – fadden