Once a pipeline has been created, it can be bound to the command buffer using the command:
void vkCmdBindPipeline(
VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint,
VkPipeline pipeline);
commandBuffer is the command buffer that the pipeline will be
bound to.
pipelineBindPoint specifies the bind point, and must have one of
the values
typedef enum VkPipelineBindPoint {
VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
VK_PIPELINE_BIND_POINT_COMPUTE = 1,
} VkPipelineBindPoint;
specifying whether pipeline will be bound as a compute
(VK_PIPELINE_BIND_POINT_COMPUTE) or graphics
(VK_PIPELINE_BIND_POINT_GRAPHICS) pipeline. There are separate bind
points for each of graphics and compute, so binding one does not disturb the
other.
pipeline is the pipeline to be bound.
Once bound, a pipeline binding affects subsequent graphics or compute
commands in the command buffer until a different pipeline is bound to the
bind point. The pipeline bound to VK_PIPELINE_BIND_POINT_COMPUTE
controls the behavior of vkCmdDispatch and
vkCmdDispatchIndirect. The pipeline bound to
VK_PIPELINE_BIND_POINT_GRAPHICS controls the behavior of
vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, and
vkCmdDrawIndexedIndirect. No other commands are affected by the
pipeline state.