Я смущаюсь с 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 медленнее, по крайней мере, он выглядел так, поэтому я записал некоторые диаграммы с помощью метода Profiler:
Здесь TextureView с собственной обработкой EGL: Нить сверху - это часы, которые пробуждают поток в середине, который отображается на TextureView. После этого будет вызван главный поток, для перерисовки TextureView.
... и здесь GLSurfaceView с собственной обработкой EGL На этот раз часы находятся посередине, он вызывает поток сверху, чтобы отобразить мое изображение в фреймбуфере, которое я передаю непосредственно в SurfaceView (RENDERMODE_WHEN_DIRTY) и вызываю requestRender, чтобы запросить визуализацию.
Как вы можете увидеть с кратким обзором, что с GLSurfaceView он выглядит более чистым, чем с TextureView.
В обоих примерах у меня не было ничего другого на экране, и они отображали точно такие же Meshes с тем же шейдером.
На мой вопрос: Есть ли способ использовать GLSurfaceView с контекстами EGL14?
Я сделал что-то не так?