我对 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 记录了一些图表:
这里是带有自己的 EGL 处理的 TextureView: 顶部的 Thread 是一个时钟,用于唤醒中间的 Thread,它会渲染到 TextureView 上。之后将调用主线程,用于重绘 TextureView。
...这里是带有自己的EGL处理的GLSurfaceView 这次时钟在中间,它调用顶部的线程将我的图像渲染到帧缓冲区中,我将其直接提供给SurfaceView(RENDERMODE_WHEN_DIRTY)并调用requestRender请求要渲染的视图。
正如您已经看到的那样,使用 GLSurfaceView 看起来比使用 TextureView 更干净。
在这两个示例中,我在屏幕上没有任何其他内容,它们使用相同的着色器渲染完全相同的网格。
我的问题:有没有办法将 GLSurfaceView 与 EGL14 上下文一起使用?
我做错什么了吗?