diff options
Diffstat (limited to 'video.cpp')
-rw-r--r-- | video.cpp | 34 |
1 files changed, 27 insertions, 7 deletions
@@ -1829,13 +1829,33 @@ void Context::submit( VkDeviceSize offset = (VkDeviceSize)binding->offset; vkCmdBindVertexBuffers(ctx->cb, 0, 1, &buf, &offset); } - vkCmdDraw( - ctx->cb, - draw.vertex_count, - draw.instance_count, - draw.first_vertex, - draw.first_instance - ); + if (draw.inds.id) { + const Index_Buffer_Binding& inds = draw.inds; + VkBuffer buf = ((Buffer_Vk*)&dev->get_buffer(inds.id))->buf; + VkDeviceSize offset = (VkDeviceSize)inds.offset; + vkCmdBindIndexBuffer( + ctx->cb, + buf, + offset, + VK_INDEX_TYPE_UINT16 + ); + vkCmdDrawIndexed( + ctx->cb, + draw.vertex_count, + draw.instance_count, + draw.first_vertex, + draw.vertex_offset, + draw.first_instance + ); + } else { + vkCmdDraw( + ctx->cb, + draw.vertex_count, + draw.instance_count, + draw.first_vertex, + draw.first_instance + ); + } ctx->end_rp(rpo); pso.on_submit(); if (dso) |