一句话总结:PBO 可以存放图像数据,是 CPU 与 GPU 之间像素数据的中转站。

什么是 PBO

PBO 全称 Pixel Buffer Object
它是一块由 GL 管理的内存,作为 CPU 与 GPU 之间的缓存。单个 PBO 只负责中转;两个以上的 PBO 轮流读写,CPU 与 GPU 才能并行处理数据。

PBO 与 Texture

PBO 连接了 CPU 与 GPU

为什么需要 PBO

首先没有 PBO 的情况下,数据无论从 CPU 到 GPU,还是从 GPU 到 CPU 都是可以传递的。
也就是说,PBO 有传递数据的能力,但它的重要意义在其他方面。

在 CPU 的多线程编程中,有一个双 buffer 的处理机制:

没错,CPU 与 GPU 之间也需要高效的处理数据,这就是 PBO 存在的意义。

当然根据具体的场景需求,也可以是 3 个,4 个,n 个 PBO。
多备几个,是为了让上一轮的数据有时间准备好,不挡住当前这一轮。
从这个角度而言,PBO 是 CPU 与 GPU 之间的数据缓存空间。