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.