跳到主要内容

vkBeginCommandBuffer

函数原型

VkResult vkBeginCommandBuffer(
VkCommandBuffer commandBuffer,
const VkCommandBufferBeginInfo* pBeginInfo);

描述

开始录制命令缓冲。

参数

  • commandBuffer : 录制指令的命令缓冲区。
  • pBeginInfo : VkCommandBufferBeginInfo 结构体指针,描述了命令缓冲区如何开始录制的附加信息。

补充

VkCommandBufferBeginInfo 结构体定义:

typedef struct VkCommandBufferBeginInfo {
VkStructureType sType;
const void* pNext;
VkCommandBufferUsageFlags flags;
const VkCommandBufferInheritanceInfo* pInheritanceInfo;
} VkCommandBufferBeginInfo;
  • sType : VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
  • flags : VkCommandBufferUsageFlagBits 的位掩码,用于指定命令缓冲区的使用行为。
typedef enum VkCommandBufferUsageFlagBits {
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001, //每次记录的命令缓冲区只提交一次,在每次提交前重置再开始记录。
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002, //辅助命令缓冲区完全位于渲染通道内,主命令缓冲区忽略此位。
VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004, //命令缓冲区可以在挂起状态时重新提交到队列,并记录到多个主命令缓冲区中。
} VkCommandBufferUsageFlagBits;
  • pInheritanceInfo : VkCommandBufferInheritanceInfo 结构体指针,如果commandBuffer是辅助命令缓冲器,则使用该命令缓冲器。如果是主命令缓冲区,则忽略此值。

返回值

  • VK_SUCCESS : 成功开始录制命令缓冲。
  • 其他 : 命令缓冲开始录制失败。

代码示例

VkCommandBuffer commandBuffer = create_command_buffer(device, commandPool);
VkCommandBufferBeginInfo beginInfo{};
beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
vkBeginCommandBuffer(commandBuffer, &beginInfo);