SurfaceTexture详解
发布时间:2026-09-28 | 浏览:1
SurfaceTexture详解
之前讲到了 flutter的Texture SurfaceTexture 是 Surface 和 OpenGL ES (GLES) 纹理的组合。SurfaceTexture 用于提供输出到 GLES 纹理的 Surface SurfaceTexture 包含一个 BufferQueue。当生产方将新的缓冲区排入队列时,onFrameAvailable() 回调会通知应用。然后,应用调用 updateTexImage(),这会释放先前占有的缓冲区,从队列中获取新缓冲区并执行 EGL 调用,从而使 GLES 可将此缓冲区作为外部纹理使用。
关键方法: SurfaceTexture(int texName, boolean singleBufferMode)构造方法 setOnFrameAvailableListener 设置回调,当生产者准备好新的帧后会调用Listener updateTexImage 更新texture到指定的GLESContext detachFromGLContext attachToGLContext 解绑/绑定 当前GLContext getTransformMatrix 设置重采样纹理矩阵,当渲染的时候会用到这个数据 release() 完全释放 SufaceTexture的 buffers并且吧Surface状态置为abandoned
android-8.0.0_r1 源码解析:
GLConsumer参数解释: bq是BufferQueue创建BufferConsumer tex 表示要将图像流传输到的OpenGL ES纹理名称。 texTarget指定了哪个纹理将被绑定 useFenceSync表示是否需要同步访问缓冲区 可以从一个OpenGL ES上下文中分离GLConsumer,然后分别使用detachFromContext和attachToContext方法将GLConsumer附加到另一个上下文。 如果设置tex参数则会通过attachToContext将GLConsumer附加到OpenGL ES context中。 第一次调用updateTexImage才会绑定,之后所有对updateTexImage的调用必须使用相同的当前OpenGL ES context进行
SurfaceTexture_updateTexImage
acquireBufferLocked创建EglImage并设置到EglSlots中
updateAndReleaseLocked 更新 EglImage createIfNeeded 如果EGLDisplay改变或者crop改变则会创建EglImage bindToTextureTarget 将调用glEGLImageTargetTexture2DOES去绑定image到指定的目标纹理
这里创建EGLImageKHR,EGLImageKHR用于共享EGL资源
EGL的ShareContext
EGL的ShareContext是常见的共享上下文的方式(iOS平台的EAGL叫ShareGroup)。
当share_context参数传入另一个EGL的context时,这两个EGLContext就可以共享纹理以及VBO等。 需要注意的是container objects不能被共享,比如: Framebuffer objects Vertex array objects Transform feedback objects Program pipeline objects
参考: https://wiki.jikexueyuan.com/project/deep-android-v1/classes.html EGLImageKHR: https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_image_base.txt
你知道煮鸡蛋时加盐能让蛋壳更好剥吗?
真我香水多少钱?价格与性价比全解析
家常兔肉的做法有哪些?简单易学的兔肉菜谱分享
93年毛泽东邮票为何成为收藏界的热门珍品?
鸡蛋干面条怎么做才好吃又简单?
3D蚕丝面膜真的比普通面膜更好用吗?
家常皮冻的做法大全,怎样做才能Q弹爽口?
核桃蛋糕怎么做才能松软又美味?
化妆品到底是什么?揭秘它的真实定义与作用!
香椿炒鸡蛋怎么做?简单几步教你轻松搞定!
奥斯卡护肤品集团的明星产品真的值得入手吗?
毛豆烧带鱼有哪些简单又美味的烹饪窍门?
专柜化妆品的价格到底值不值得买?
辽金玛瑙珠子应该如何正确盘玩与保养?
柑橘保湿面膜真的能让肌肤水润透亮吗?
如何在家做出美味的小鸡炖蘑菇土豆粉皮?
如何判断玛瑙的品质与合理价位?
全集《图书馆的女朋友》高清完整版免费在线观看_樱花动漫_《图书馆的女朋友》全集无删减原版_动漫全集_免费在线点播 - 风车动漫网_《图书馆的女朋友》全集高清在线播放_VS 影院
欲牛影评:这部电影为何成为年度黑马?
戈壁闪光玛瑙究竟有哪些不为人知的收藏价值?
闪婚题材电影真的能反映现实爱情吗?
前导精华真的好用吗?实测分享你的护肤第一步!
莎绿化妆品真的好用吗?真实测评告诉你答案!
瘦脸精华真的有效吗?揭秘紧致轮廓的秘诀!
民国时期的玛瑙饰品现在值钱吗?
玛瑙圆佛头的市场价格是多少?如何鉴别其收藏价值?
家常科技:如何用智能厨具轻松做出美味大餐?
最新5号香水究竟有什么特别之处?