我做了一些谷歌搜索,看来Vulkan没有Pixel Buffer Object。在Vulkan API中是否有类似的内容?
答案 0 :(得分:7)
OpenGL也没有“像素缓冲区对象”。 OpenGL的含义是 memory ,又名:buffer objects。缓冲区对象的一个用途是作为pixel transfer operations的源/目标;当与缓冲区对象一起使用时,它们can execute asynchronously。虽然这样做通常被称为“像素缓冲对象”,但它并不是一个特殊的对象。它只是使用OpenGL分配的内存来执行图像数据到缓冲区对象的异步复制。
OpenGL需要一个特殊的系统,因为它本身就是一个同步API。相比之下,Vulkan中的 nothing 几乎是同步的。因此,Vulkan不需要特殊的系统来实现它。
vkCmdCopyImageToBuffer
是一个Vulkan命令,因为它以vkCmd
开头。因此,它不会立即执行;这些命令存储在Vulkan命令缓冲区中,由GPU异步执行。
Vulkan没有用于执行异步像素副本的特殊系统,因为Vulkan操作默认情况下是 异步。与OpenGL不同,它不会试图将此隐藏起来。