From fd9697aac63d515935b8ab21a428964cdddc825c Mon Sep 17 00:00:00 2001 From: ohyzha Date: Mon, 22 Jul 2024 13:04:47 +0300 Subject: [PATCH] fix 0 size vulkan index buffers --- openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp | 5 +++-- openVulkanoCpp/Vulkan/Scene/VulkanGeometry.hpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp b/openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp index c49030a..c97ed17 100644 --- a/openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp +++ b/openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp @@ -152,8 +152,9 @@ namespace OpenVulkano::Vulkan { ManagedBuffer::Ptr vertexBuffer = CreateDeviceOnlyBufferWithData(sizeof(Vertex) * geometry->GetVertexCount(), vk::BufferUsageFlagBits::eVertexBuffer, geometry->GetVertices()); - ManagedBuffer::Ptr indexBuffer = - CreateDeviceOnlyBufferWithData(Utils::EnumAsInt(geometry->indexType) * geometry->GetIndexCount(), vk::BufferUsageFlagBits::eIndexBuffer, geometry->GetIndices()); + ManagedBuffer::Ptr indexBuffer; + if (geometry->GetIndexCount()) + indexBuffer = CreateDeviceOnlyBufferWithData(Utils::EnumAsInt(geometry->indexType) * geometry->GetIndexCount(), vk::BufferUsageFlagBits::eIndexBuffer, geometry->GetIndices()); VulkanGeometry* vkGeo = new VulkanGeometry(geometry, vertexBuffer, indexBuffer); geometries.emplace_back(vkGeo); geometry->renderGeo = vkGeo; diff --git a/openVulkanoCpp/Vulkan/Scene/VulkanGeometry.hpp b/openVulkanoCpp/Vulkan/Scene/VulkanGeometry.hpp index 1392fea..eb5459f 100644 --- a/openVulkanoCpp/Vulkan/Scene/VulkanGeometry.hpp +++ b/openVulkanoCpp/Vulkan/Scene/VulkanGeometry.hpp @@ -47,7 +47,7 @@ namespace OpenVulkano::Vulkan void RecordBind(vk::CommandBuffer& cmdBuffer) { cmdBuffer.bindVertexBuffers(0, 1, &m_vertexBuffer->buffer, &m_offsets); - cmdBuffer.bindIndexBuffer(m_indexBuffer->buffer, 0, m_indexType); + if (m_indexBuffer) { cmdBuffer.bindIndexBuffer(m_indexBuffer->buffer, 0, m_indexType); } } void RecordDraw(vk::CommandBuffer& cmdBuffer)