TextureView vs. GLSurfaceView oder Verwendung von GLSurfaceView mit EGL14

Ich verwechsle mich mit der EGL.

Mein GLSurfaceView erstellt einen EGLContext. Jetzt erstelle ich einen gemeinsamen Kontext. Jetzt muss ich eine EGLExtension verwenden.

Die Methode, die ich verwenden muss, heißt (> = API18):

EGLExt.eglPresentationTimeANDROID(android.opengl.EGLDisplay display, android.opengl.EGLSurface surface, long time);

Das Problem ist, dass das GLSurfaceView nur javax.microedition.khronos.egl.EGLContext s erstellt.

Das sagt mir, dass ich GLSurfaceView NICHT verwenden soll. Also habe ich TextureView ausprobiert, was ein wenig ähnlich ist, mit dem Unterschied, dass Sie Ihre eigenen EGL-Sachen bearbeiten müssen. Welches ist gut für diesen Zweck.

Aber: Die TextureView ist langsamer, zumindest sah es so aus, also habe ich einige Diagramme mit dem Method Profiler aufgenommen:

Hier das TextureView mit eigenem EGL Handling: Der Thread oben ist eine Uhr, die den Thread in der Mitte aufweckt, der auf die TextureView gerendert wird. Danach wird der Haupt-Thread aufgerufen, um die TextureView neu zu zeichnen.

... und hier das GLSurfaceView mit eigenem EGL-Handling Die Uhr steht diesmal in der Mitte, sie ruft den Thread oben auf, um mein Bild in einen Framebuffer zu rendern, den ich direkt in das SurfaceView gebe (RENDERMODE_WHEN_DIRTY) und requestRender to auf Fordern Sie die Ansicht zum Rendern an.

Wie Sie schon auf den ersten Blick sehen können, sieht es mit dem GLSurfaceView viel sauberer aus als mit dem TextureView.

In beiden Beispielen hatte ich nichts anderes auf dem Bildschirm und sie haben genau die gleichen Meshes mit dem gleichen Shader gerendert.

Zu meiner Frage: Gibt es eine Möglichkeit, GLSurfaceView mit EGL14-Kontexten zu verwenden?

Habe ich etwas falsch gemacht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage