【发布时间】:2015-03-25 09:45:15
【问题描述】:
我在 Android 4.4.2(API 级别 19)上安装了 OpenGL ES 2.0 和 EGL。
我的目标是直接从 CPU/用户空间访问窗口的缓冲区(OpenGL 术语中的默认帧缓冲区)。
我尝试使用 ANativeWindow_fromSurface 从 GLSurfaceView 的 Surface 获取 ANativeWindow。然后尝试使用 ANativeWindow_lock 访问缓冲区失败,状态为 -22。 Logcat给了
03-25 10:50:25.363: E/BufferQueue(171): [SurfaceView](this:0xb8d5d978,id:32,api:1,p:6488,c:171) connect: already connected (cur=1, req=2)
从 discussion 看来,您似乎无法使用 GLSurfaceView 做到这一点,因为 EGL 已经获得了表面。
你怎么能得到窗口的记忆?你能通过 EGLSurface 以某种方式做到这一点吗?我愿意使用 android::GraphicBuffer,即使它不是 NDK 的一部分。
如果这不可行,您可以使用另一个方向,首先创建一个 android::GraphicBuffer,然后将其绑定到一个 EGLSurface 和显示的窗口吗?
【问题讨论】:
标签: android android-ndk opengl-es-2.0 glsurfaceview egl