diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-09-27 16:18:17 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-09-27 16:18:17 -0400 |
| commit | 104224b9022794fd9eff77154482630bcf18348c (patch) | |
| tree | 4e456f9350789a29d9f4b828f4fa195728ec3f13 /src/window.cpp | |
| parent | b14582679d0a113cb8571a7e6764436391d6af48 (diff) | |
align render-time binding indexes with pipeline layout
Diffstat (limited to 'src/window.cpp')
| -rw-r--r-- | src/window.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/window.cpp b/src/window.cpp index 66e2095..5598e56 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1351,6 +1351,8 @@ void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { vkCmdSetViewport(commandBuffer, 0, 1, &viewport); vkCmdSetScissor(commandBuffer, 0, 1, &scissor); + VkDeviceSize offsets[1] = {0U}; + const uint64_t bindBucketCount = ECS_GetGrBinds_BucketCount(); for (long b = 0; b < bindBucketCount; ++b) { uint64_t itemCount; @@ -1359,16 +1361,18 @@ void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { CompGrBinds *binder = &items[i]; if (!binder->vkPipelineLayout) continue; + if (binder->instanceBindingCount < 1) { + continue; + } + vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, binder->graphicsPipeline); vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, binder->vkPipelineLayout, 0, 1, &binder->vkDescriptorSets[CURRENT_FRAME], 0, {}); + vkCmdBindVertexBuffers(commandBuffer, 0, 1, &UniformBuffers[CURRENT_FRAME], offsets); + vkCmdBindIndexBuffer(commandBuffer, binder->indexBuffer, binder->indexOffsets, VK_INDEX_TYPE_UINT16); + vkCmdBindVertexBuffers(commandBuffer, binder->vertexFirstBinding, binder->vertexBindingCount, &binder->vertexBuffer, &binder->vertexOffsets); - if (binder->normalsBindingCount > 0) - vkCmdBindVertexBuffers(commandBuffer, binder->normalsFirstBinding, binder->normalsBindingCount, &binder->normalsBuffer, &binder->normalsOffsets); - if (binder->uvBindingCount > 0) - vkCmdBindVertexBuffers(commandBuffer, binder->uvFirstBinding, binder->uvBindingCount, &binder->uvBuffer, &binder->uvOffsets); - if (binder->indexBindingCount > 0) - vkCmdBindIndexBuffer(commandBuffer, binder->indexBuffer, binder->vertexOffsets, VK_INDEX_TYPE_UINT16); - - vkCmdBindVertexBuffers(commandBuffer, binder->indexFirstBinding, binder->instanceBindingCount, &binder->instanceBuffer, &binder->instanceOffsets); + vkCmdBindVertexBuffers(commandBuffer, binder->normalsFirstBinding, binder->normalsBindingCount, &binder->normalsBuffer, &binder->normalsOffsets); + vkCmdBindVertexBuffers(commandBuffer, binder->uvFirstBinding, binder->uvBindingCount, &binder->uvBuffer, &binder->uvOffsets); + vkCmdBindVertexBuffers(commandBuffer, binder->instanceFirstBinding, binder->instanceBindingCount, &binder->instanceBuffer, &binder->instanceOffsets); vkCmdDrawIndexed(commandBuffer, binder->indexCount, binder->instances.Count(), 0, 0, 0); } |
