【发布时间】:2014-02-13 20:27:08
【问题描述】:
我对 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 这次时钟在中间,它调用顶部的 Thread 将我的图像渲染到帧缓冲区中,我将其直接交给 SurfaceView (RENDERMODE_WHEN_DIRTY) 并调用 requestRender 请求视图进行渲染。
正如您已经看到的那样,使用 GLSurfaceView 看起来比使用 TextureView 更干净。
在这两个示例中,我没有在屏幕上显示任何其他内容,它们使用相同的着色器渲染完全相同的网格。
我的问题: 有没有办法将 GLSurfaceView 与 EGL14 上下文一起使用?
我是不是做错了什么?
【问题讨论】:
标签: android glsurfaceview textureview