fix ambiguity in render code

This commit is contained in:
Bailey Harrison 2023-08-04 21:52:27 +01:00
parent a8ac1dbe1a
commit 7dd8d10f99

View File

@ -68,7 +68,8 @@ void RenderSystem::OnUpdate(float ts) {
const gfx::Buffer* vb; const gfx::Buffer* vb;
const gfx::Buffer* ib; const gfx::Buffer* ib;
const gfx::DescriptorSet* material_set; const gfx::DescriptorSet* material_set;
uint32_t index_count; bool draw_indexed;
uint32_t draw_count;
PushConstants push_constants; PushConstants push_constants;
}; };
std::vector<std::tuple<int, const gfx::Pipeline*, DrawCallData>> std::vector<std::tuple<int, const gfx::Pipeline*, DrawCallData>>
@ -96,9 +97,11 @@ void RenderSystem::OnUpdate(float ts) {
data.material_set = r->material->texture_->GetDescriptorSet(); data.material_set = r->material->texture_->GetDescriptorSet();
if (r->index_count_override == 0) { if (r->index_count_override == 0) {
assert(r->mesh != nullptr); assert(r->mesh != nullptr);
data.index_count = r->mesh->GetCount(); data.draw_count = r->mesh->GetCount();
data.draw_indexed = true;
} else { } 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; data.push_constants.model = t->world_matrix;
@ -140,13 +143,17 @@ void RenderSystem::OnUpdate(float ts) {
draw_call.material_set, 2); draw_call.material_set, 2);
gfx_->CmdPushConstants(render_data.draw_buffer, pipeline, 0, gfx_->CmdPushConstants(render_data.draw_buffer, pipeline, 0,
sizeof(PushConstants), &draw_call.push_constants); sizeof(PushConstants), &draw_call.push_constants);
if (draw_call.ib) { if (draw_call.vb) {
gfx_->CmdBindVertexBuffer(render_data.draw_buffer, 0, 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_->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); 0, 0);
} else { } 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);
} }
} }