From 7dd8d10f992d5be19d0bc2fce863707d59905f81 Mon Sep 17 00:00:00 2001 From: bailwillharr Date: Fri, 4 Aug 2023 21:52:27 +0100 Subject: [PATCH] fix ambiguity in render code --- src/systems/render.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/systems/render.cpp b/src/systems/render.cpp index c054934..c6761cc 100644 --- a/src/systems/render.cpp +++ b/src/systems/render.cpp @@ -68,7 +68,8 @@ void RenderSystem::OnUpdate(float ts) { const gfx::Buffer* vb; const gfx::Buffer* ib; const gfx::DescriptorSet* material_set; - uint32_t index_count; + bool draw_indexed; + uint32_t draw_count; PushConstants push_constants; }; std::vector> @@ -96,9 +97,11 @@ void RenderSystem::OnUpdate(float ts) { data.material_set = r->material->texture_->GetDescriptorSet(); if (r->index_count_override == 0) { assert(r->mesh != nullptr); - data.index_count = r->mesh->GetCount(); + data.draw_count = r->mesh->GetCount(); + data.draw_indexed = true; } else { - data.index_count = r->index_count_override; + data.draw_count = r->index_count_override; + data.draw_indexed = false; } data.push_constants.model = t->world_matrix; @@ -140,13 +143,17 @@ void RenderSystem::OnUpdate(float ts) { draw_call.material_set, 2); gfx_->CmdPushConstants(render_data.draw_buffer, pipeline, 0, sizeof(PushConstants), &draw_call.push_constants); - if (draw_call.ib) { + if (draw_call.vb) { gfx_->CmdBindVertexBuffer(render_data.draw_buffer, 0, draw_call.vb); + } + if (draw_call.ib) { gfx_->CmdBindIndexBuffer(render_data.draw_buffer, draw_call.ib); - gfx_->CmdDrawIndexed(render_data.draw_buffer, draw_call.index_count, 1, 0, + } + if (draw_call.draw_indexed) { + gfx_->CmdDrawIndexed(render_data.draw_buffer, draw_call.draw_count, 1, 0, 0, 0); } else { - gfx_->CmdDraw(render_data.draw_buffer, draw_call.index_count, 1, 0, 0); + gfx_->CmdDraw(render_data.draw_buffer, draw_call.draw_count, 1, 0, 0); } }