71        VkPipelineInputAssemblyStateCreateInfo inputAssemblyState =
 
   74        VkPipelineRasterizationStateCreateInfo rasterizationState =
 
   77        VkPipelineColorBlendAttachmentState blendAttachmentState =
 
   80        VkPipelineColorBlendStateCreateInfo colorBlendState =
 
   83        VkPipelineDepthStencilStateCreateInfo depthStencilState =
 
   86        VkPipelineViewportStateCreateInfo viewportState =
 
   89        VkPipelineMultisampleStateCreateInfo multisampleState =
 
   92        std::vector<VkDynamicState> dynamicStateEnables = {
 
   93            VK_DYNAMIC_STATE_VIEWPORT,
 
   94            VK_DYNAMIC_STATE_SCISSOR
 
   96        VkPipelineDynamicStateCreateInfo dynamicState =
 
  100        std::array<VkPipelineShaderStageCreateInfo, 2> shaderStages;
 
  110        std::vector<VkVertexInputBindingDescription> inputBindings = {
 
  117        std::vector<VkVertexInputAttributeDescription> inputAttributes = {
 
  129        inputState.vertexBindingDescriptionCount = 
static_cast<uint32_t
>(inputBindings.size());
 
  130        inputState.pVertexBindingDescriptions = inputBindings.data();
 
  131        inputState.vertexAttributeDescriptionCount = 
static_cast<uint32_t
>(inputAttributes.size());
 
  132        inputState.pVertexAttributeDescriptions = inputAttributes.data();
 
  134        pipelineCreateInfo.pVertexInputState = &inputState;
 
  135        pipelineCreateInfo.pInputAssemblyState = &inputAssemblyState;
 
  136        pipelineCreateInfo.pRasterizationState = &rasterizationState;
 
  137        pipelineCreateInfo.pColorBlendState = &colorBlendState;
 
  138        pipelineCreateInfo.pMultisampleState = &multisampleState;
 
  139        pipelineCreateInfo.pViewportState = &viewportState;
 
  140        pipelineCreateInfo.pDepthStencilState = &depthStencilState;
 
  141        pipelineCreateInfo.pDynamicState = &dynamicState;
 
  142        pipelineCreateInfo.stageCount = 
static_cast<uint32_t
>(shaderStages.size());
 
  143        pipelineCreateInfo.pStages = shaderStages.data();
 
  144        pipelineCreateInfo.renderPass = renderPass;
 
  165        inputState.pVertexBindingDescriptions = inputBindings.data();
 
  166        inputState.vertexAttributeDescriptionCount = 
static_cast<uint32_t
>(inputAttributes.size());
 
  167        inputState.pVertexAttributeDescriptions = inputAttributes.data();
 
  168        pipelineCreateInfo.pVertexInputState = &inputState;
 
  169        pipelineCreateInfo.pStages = shaderStages.data();
 
  191        inputState.pVertexBindingDescriptions = inputBindings.data();
 
  192        inputState.vertexAttributeDescriptionCount = 
static_cast<uint32_t
>(inputAttributes.size());
 
  193        inputState.pVertexAttributeDescriptions = inputAttributes.data();
 
  194        pipelineCreateInfo.pVertexInputState = &inputState;
 
  195        pipelineCreateInfo.pStages = shaderStages.data();
 
 
  247        VkDeviceSize offsets[1] = { 0 };
 
  253            vkCmdBindPipeline(drawCmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, 
pipeline);
 
  255            vkCmdBindIndexBuffer(drawCmdBuffer, 
mCubeIndex.bufferHandle(), 0, VK_INDEX_TYPE_UINT32);
 
  256            vkCmdBindVertexBuffers(drawCmdBuffer, 0, 1, &dataBuffer, offsets);
 
  257            vkCmdBindVertexBuffers(drawCmdBuffer, 1, 1, &instanceBuffer, offsets);
 
  258            vkCmdDrawIndexed(drawCmdBuffer, 
mCubeIndex.size(), cubeCount, 0, 0, 0);
 
  263        if (sphereCount > 0) {
 
  267            vkCmdBindPipeline(drawCmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, 
spherePipeline);
 
  269            vkCmdBindIndexBuffer(drawCmdBuffer, 
mSphereIndex.bufferHandle(), 0, VK_INDEX_TYPE_UINT32);
 
  270            vkCmdBindVertexBuffers(drawCmdBuffer, 0, 1, &dataBuffer, offsets);
 
  271            vkCmdBindVertexBuffers(drawCmdBuffer, 1, 1, &instanceBuffer, offsets);
 
  272            vkCmdDrawIndexed(drawCmdBuffer, 
mSphereIndex.size(), sphereCount, 0, 0, 0);
 
  277        if (capsuleCount > 0) {
 
  281            vkCmdBindPipeline(drawCmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, 
capsulePipeline);
 
  283            vkCmdBindIndexBuffer(drawCmdBuffer, 
mCapsuleIndex.bufferHandle(), 0, VK_INDEX_TYPE_UINT32);
 
  284            vkCmdBindVertexBuffers(drawCmdBuffer, 0, 1, &dataBuffer, offsets);
 
  285            vkCmdBindVertexBuffers(drawCmdBuffer, 1, 1, &instanceBuffer, offsets);
 
  286            vkCmdDrawIndexed(drawCmdBuffer, 
mCapsuleIndex.size(), capsuleCount, 0, 0, 0);