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