为了在
Android NDK上获得快速的OpenGL ES 2.0纹理像素访问,我想使用eglCreateImageKHR()扩展.
根据EGL_NATIVE_BUFFER_ANDROID docs:
This extension enables using an Android window buffer (struct
ANativeWindowBuffer) as an EGLImage source.
ANativeWindowBuffer是本机框架类(如GraphicBuffer)使用的内部结构.
不幸的是,因为我在NDK上,所以我无法直接访问这些类.
NDK native_window接口允许我将Java Surface对象传递给NDK.然后我可以使用ANativeWindow_fromSurface()来获得不透明的ANativeWindow *句柄.使用此指针,我可以调用ANativeWindow_lock()来填充ANativeWindow_Buffer类型的结构(注意_).
如果我尝试将此& ANativeWindow_Buffer对象与eglCreateImageKHR()一起使用,则它会失败并显示EGL_BAD_NATIVE_WINDOW.
我的问题是:如何将ANativeWindow_Buffer与eglCreateImageKHR()一起使用,或者如何从ANativeWindow_Buffer或ANativeWindow *获取ANativeWindowBuffer.