有没有等同于 OpenGL 像素缓冲对象的 Vulkan?

Is there a Vulkan equivalent to OpenGL's pixel buffer object?

我进行了一些谷歌搜索,发现 Vulkan 似乎没有像素缓冲区对象。 Vulkan中有类似的东西吗API?

OpenGL 也不会 "have a Pixel Buffer Object"。 OpenGL 拥有的是 内存 ,又名:buffer objects. One of the uses of buffer objects is as the source/destination for pixel transfer operations; when used with buffer objects, they can execute asynchronously。虽然这样做通常被称为 "pixel buffer objects",但它并不是一个特殊的对象。它只是使用 OpenGL 分配的内存来执行图像数据的异步复制 into/outof 缓冲区对象。

OpenGL 需要一个特殊的系统,因为它本质上是同步的 API。相比之下,Vulkan 中几乎 nothing 是同步的。所以 Vulkan 不需要特殊的系统。

vkCmdCopyImageToBuffer 是一个 Vulkan 命令,因为它以 vkCmd 开头。因此,它不会立即执行;此类命令存储在 Vulkan 命令缓冲区中,由 GPU 异步执行。

Vulkan 没有用于执行异步像素复制的特殊系统,因为 Vulkan 操作默认 是异步的。而且与 OpenGL 不同的是,它不会试图向您隐藏这一点。