Add vertex buffer step mode config

This commit is contained in:
Georg Hagen
2025-01-04 20:58:49 +01:00
parent 6ccef62ad3
commit c0e85d4fba
2 changed files with 7 additions and 2 deletions

View File

@@ -12,6 +12,8 @@
namespace OpenVulkano namespace OpenVulkano
{ {
enum class VertexStepMode : uint32_t { VERTEX = 0, INSTANCE };
struct VertexInputParameter struct VertexInputParameter
{ {
uint32_t location; uint32_t location;
@@ -32,13 +34,16 @@ namespace OpenVulkano
{ {
uint32_t bindingId; uint32_t bindingId;
uint32_t vertexSize; uint32_t vertexSize;
VertexStepMode stepMode = VertexStepMode::VERTEX;
std::vector<VertexInputParameter> inputParameters; std::vector<VertexInputParameter> inputParameters;
VertexInputDescription(uint32_t bindingId, uint32_t vertexSize) : bindingId(bindingId), vertexSize(vertexSize) VertexInputDescription(uint32_t bindingId, uint32_t vertexSize) : bindingId(bindingId), vertexSize(vertexSize)
{} {}
VertexInputDescription(uint32_t bindingId, const VertexInputDescription& vertexDescription) 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) for (auto& param : inputParameters)
{ {

View File

@@ -54,7 +54,7 @@ namespace OpenVulkano::Vulkan
for(const auto& description : shader->vertexInputDescriptions) 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<vk::VertexInputRate>(description.stepMode));
if (shader->vertexInputDescriptions.size() > 1) if (shader->vertexInputDescriptions.size() > 1)
{ {
for(const auto& param : description.inputParameters) for(const auto& param : description.inputParameters)