TextureView vs. GLSurfaceView или Как использовать GLSurfaceView с EGL14
Я путаюсь с EGL.
Мой GLSurfaceView создает EGLContext. Теперь я создаю общий контекст. Теперь мне нужно использовать EGLExtension.
Метод, который я должен использовать, называется (> = API18):
EGLExt.eglPresentationTimeANDROID(android.opengl.EGLDisplay display, android.opengl.EGLSurface surface, long time);
Проблема в том, что GLSurfaceView создает только javax.microedition.khronos.egl.EGLContext s.
Что говорит мне, НЕ использовать GLSurfaceView. Поэтому я попробовал TextureView, который немного похож, с той разницей, что вы должны обрабатывать свои собственные EGL. Что хорошо для этой цели.
Но: TextureView работает медленнее, по крайней мере, это выглядело так, поэтому я записал некоторые диаграммы с помощью Method Profiler:
Вот TextureView с собственной обработкой EGL: Поток вверху - это часы, которые будят Поток посередине, который рендерится в TextureView. После этого будет вызван основной поток для перерисовки TextureView.
... и здесь GLSurfaceView с их собственной обработкой EGL. На этот раз часы находятся посередине, они вызывают поток сверху, чтобы передать мое изображение в кадровый буфер, который я передаю непосредственно в SurfaceView (RENDERMODE_WHEN_DIRTY), и вызываем requestRender для запросить представление для рендеринга.
Как вы можете кратко увидеть, что с GLSurfaceView это выглядит намного чище, чем с TextureView.
В обоих примерах у меня больше ничего не было на экране, и они отображали точно такие же меши с тем же шейдером.
На мой вопрос: есть ли способ использовать GLSurfaceView с контекстами EGL14?
Я сделал что-то не так?