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?

Я сделал что-то не так?

Ответы на вопрос(2)

Ваш ответ на вопрос