TextureView vs. GLSurfaceView ou Como usar o GLSurfaceView com EGL14

Estou ficando confuso com o EGL.

Meu GLSurfaceView cria um EGLContext. Agora eu crio um contexto compartilhado. Agora eu preciso usar uma EGLExtension.

O método que eu tenho que usar é chamado (> = API18):

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

O problema é que o GLSurfaceView cria apenas javax.microedition.khronos.egl.EGLContext s.

O que me diz, para não usar GLSurfaceView. Então, tentei o TextureView, que é um pouco semelhante, com a diferença de que você precisa lidar com o seu próprio material EGL. O que é bom para esse fim.

Mas: O TextureView é mais lento, pelo menos parecia assim, então eu gravei alguns diagramas com o Method Profiler:

Aqui o TextureView com o próprio EGL Handling: O Thread na parte superior é um relógio que ativa o Thread no meio, que é renderizado no TextureView. O Thread principal será chamado depois disso, para redesenhar o TextureView.

... e aqui o GLSurfaceView com seu próprio tratamento de EGL O relógio está no meio desta vez, ele chama o Thread na parte superior para renderizar minha imagem em um framebuffer, que eu dou diretamente no SurfaceView (RENDERMODE_WHEN_DIRTY) e chamo requestRender para solicite a exibição para renderizar.

Como você pode ver com uma breve olhada, já que com o GLSurfaceView parece muito mais limpo que com o TextureView.

Nos dois exemplos, não havia mais nada na tela e eles renderizaram exatamente as mesmas malhas com o mesmo sombreador.

À minha pergunta: Existe uma maneira de usar o GLSurfaceView com os contextos EGL14?

Fiz algo de errado?

questionAnswers(2)

yourAnswerToTheQuestion