Issue:为什么 GlSurfaceView 在 eglCreateWindowSurface() 时, 对于 Object 类型参数 native_window 直接传入 SurfaceHolder 对象?
其实通过观察
EGL14
的源码, 不难发现 Google 其实只需要SurfaceHolder
里的Surface
对象, 那又是为什么呢?
Surface 的源码注解是这么说的 Handle onto a raw buffer that is being managed by the screen compositor.(大意: 是屏幕管理器的句柄)
那么这个时候,我们就需要到 Khronos 官网 看一下EGL
eglCreateWindowSurface()
的方法说明(Android api 没做过多说明,too bad !!)
method: EGLSurface eglCreateWindowSurface() ---> 说明:create a new EGL window
param : Object native_window ---> 说明:Specifies the native window.(指定本地窗口)
<而 EGLSurface 是屏幕画布的抽象>
所以
native_window
这个参数,我更愿意将它理解成 将屏幕画布EGLSurface
的句柄赋值到native_window
这个参数对象上,那赋值到参数对象上有什么用?
就可以直接在 Java层 使用Surface
对象对屏幕进行操作了,只是GLSurfaceView
一般通过SurfaceHolder
来处理
网友评论