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_INFOflags
: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);