OpenGL ES之深入解析PBO、UBO与TBO的功能和使用

本文详细介绍了OpenGL ES中的PBO(Pixel Buffer Object)、UBO(Uniform Buffer Object)和TBO(Texture Buffer Object)。PBO用于异步像素传输,改善图像数据在内存和显存之间的拷贝性能;UBO提供了一种存储和更新大量Uniform变量的高效方式;TBO是OpenGL ES 3.2引入的特性,结合Buffer Texture,使着色器能访问由缓冲区对象管理的大型内存。文章通过实例展示了它们的使用方法和优势。

一、PBO(Pixel Buffer Object)

① PBO 是什么?

  • OpenGL PBO(Pixel Buffer Object),被称为像素缓冲区对象,主要被用于异步像素传输操作。PBO 仅用于执行像素传输,不连接到纹理,且与 FBO (帧缓冲区对象)无关。
  • OpenGL PBO(像素缓冲区对象) 类似于 VBO(顶点缓冲区对象),PBO 开辟的也是 GPU 缓存,而存储的是图像数据。PBO 可以在 GPU 的缓存间快速传递像素数据,不影响 CPU 时钟周期,除此之外,PBO 还支持异步传输。PBO 类似于“以空间换时间”策略,在使用一个 PBO 的情况下,性能无法有效地提升,通常需要多个 PBO 交替配合使用。

在这里插入图片描述

  • 与 PBO 绑定相关的 Target 标签有 2 个:GL_PIXEL_UNPACK_BUFFER 和 GL_PIXEL_PACK_BUFFER ,其中将 PBO 绑定为 GL_PIXEL_UNPACK_BUFFER 时,glTexImage2D 和 glTexSubImage2D 表示从 PBO 中解包(unpack)像素数据并复制到帧缓冲区 ;将 PBO 绑定为 GL_PIXEL_PACK_BUFFER 时,glReadPixels 表示从帧缓冲区中读取像素数据并打包(pac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

╰つ栺尖篴夢ゞ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值