:material-chevron-right-circle: vkCmdCopyBuffer
函数原型
void vkCmdCopyBuffer(
VkCommandBuffer commandBuffer,
VkBuffer srcBuffer,
VkBuffer dstBuffer,
uint32_t regionCount,
const VkBufferCopy* pRegions);
描述
在两个buffer缓冲区之间复制数据 。
参数
commandBuffer
: 录制指令的命令缓冲区。srcBuffer
: 源缓冲区,必须有 VK_BUFFER_USAGE_TRANSFER_SRC_BIT。dstBuffer
: 目标缓冲区,必须有 VK_BUFFER_USAGE_TRANSFER_DST_BIT。regionCount
: 要复制的区域数量(通常为 1)。pRegions
: 指向一个或多个 VkBufferCopy 结构体,定义了每个 copy 的偏移和大小。
补充
VkBufferCopy
结构体定义:
typedef struct VkBufferCopy {
VkDeviceSize srcOffset; // 源缓冲区偏移
VkDeviceSize dstOffset; // 目标缓冲区偏移
VkDeviceSize size; // 要复制的字节数
} VkBufferCopy;
返回值
无
代码示例
VkBufferCopy copyRegion = {
.srcOffset = 0,
.dstOffset = 0,
.size = 1024 // 复制 1024 字节
};
vkCmdCopyBuffer(
commandBuffer,
stagingBuffer,
vertexBuffer,
1,
©Region
);