diff --git a/openVulkanoCpp/Scene/Shader/VertexInputDescription.hpp b/openVulkanoCpp/Scene/Shader/VertexInputDescription.hpp index 03cb00f..1908ce7 100644 --- a/openVulkanoCpp/Scene/Shader/VertexInputDescription.hpp +++ b/openVulkanoCpp/Scene/Shader/VertexInputDescription.hpp @@ -12,6 +12,8 @@ namespace OpenVulkano { + enum class VertexStepMode : uint32_t { VERTEX = 0, INSTANCE }; + struct VertexInputParameter { uint32_t location; @@ -32,13 +34,16 @@ namespace OpenVulkano { uint32_t bindingId; uint32_t vertexSize; + VertexStepMode stepMode = VertexStepMode::VERTEX; std::vector inputParameters; VertexInputDescription(uint32_t bindingId, uint32_t vertexSize) : bindingId(bindingId), vertexSize(vertexSize) {} VertexInputDescription(uint32_t bindingId, const VertexInputDescription& vertexDescription) - : bindingId(bindingId), vertexSize(vertexDescription.vertexSize), inputParameters(vertexDescription.inputParameters) + : bindingId(bindingId), vertexSize(vertexDescription.vertexSize) + , stepMode(vertexDescription.stepMode) + , inputParameters(vertexDescription.inputParameters) { for (auto& param : inputParameters) { diff --git a/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp b/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp index e7bc334..c1046ce 100644 --- a/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp +++ b/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp @@ -54,7 +54,7 @@ namespace OpenVulkano::Vulkan for(const auto& description : shader->vertexInputDescriptions) { - vertexBindDesc.emplace_back(description.bindingId, description.vertexSize, vk::VertexInputRate::eVertex); + vertexBindDesc.emplace_back(description.bindingId, description.vertexSize, static_cast(description.stepMode)); if (shader->vertexInputDescriptions.size() > 1) { for(const auto& param : description.inputParameters)