diff options
Diffstat (limited to 'src/window.cpp')
| -rw-r--r-- | src/window.cpp | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/window.cpp b/src/window.cpp index e0184d6..6655488 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -3419,6 +3419,7 @@ void pkvk_transition_image_layout(VkCommandBuffer command_buffer, void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { uint32_t i, counter; + bool b; vkResetCommandBuffer(commandBuffer, 0); VkCommandBufferBeginInfo beginInfo; @@ -3550,16 +3551,23 @@ void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { vkCmdSetViewport(commandBuffer, 0, 1, &viewport); vkCmdSetScissor(commandBuffer, 0, 1, &scissor); - using GrBindsIterFn = pk_tmpln_1<void, CompGrBinds*, void*>; - GrBindsIterFn gr_binds_iter_cb{}; - gr_binds_iter_cb.func = [commandBuffer, imageIndex](CompGrBinds *binder) { - VkDeviceSize offsets[1] = {0U}; - if (binder->grBindsHandle == GrBindsHandle_MAX) - return; - if (!binder->vkPipelineLayout) - return; + pk_iter_t<CompGrBinds> gr_binds_iter{}; + pk_bkt_arr *ecs_gr_binds_bkt_arr = ECS_GetGrBinds(); + b = pk_bkt_arr_iter_begin(ecs_gr_binds_bkt_arr, &gr_binds_iter); + CompGrBinds *binder = nullptr; + while (b == true) { + binder = &*gr_binds_iter; + if (binder->grBindsHandle == GrBindsHandle_MAX) { + b = pk_bkt_arr_iter_increment(ecs_gr_binds_bkt_arr, &gr_binds_iter); + continue; + } + if (!binder->vkPipelineLayout) { + b = pk_bkt_arr_iter_increment(ecs_gr_binds_bkt_arr, &gr_binds_iter); + continue; + } if (binder->instanceBD.bindingCount < 1) { - return; + b = pk_bkt_arr_iter_increment(ecs_gr_binds_bkt_arr, &gr_binds_iter); + continue; } vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, binder->graphicsPipeline); vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, binder->vkPipelineLayout, 0, 1, &binder->vkDescriptorSets[imageIndex], 0, {}); @@ -3584,8 +3592,8 @@ void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { vkCmdDrawIndexed(commandBuffer, binder->physIndxBD.bindingCount, binder->instanceCounter, 0, 0, 0); } - }; - pk_bkt_arr_iterate(ECS_GetGrBinds(), &GrBindsIterFn::invoke, &gr_binds_iter_cb); + b = pk_bkt_arr_iter_increment(ecs_gr_binds_bkt_arr, &gr_binds_iter); + } if (pkeDebugHitbox.instanceBuffer != VK_NULL_HANDLE) { vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pkePipelines.pipelines.named.entity_wireframe); |
