Renderer/ShaderBinder: Make Update take a pointer and size

This commit is contained in:
Jérôme Leclercq
2021-01-22 23:15:31 +01:00
parent e6ada6846d
commit c76d6505b0
6 changed files with 20 additions and 10 deletions

View File

@@ -39,12 +39,14 @@ namespace Nz
}
}
void OpenGLShaderBinding::Update(std::initializer_list<Binding> bindings)
void OpenGLShaderBinding::Update(const Binding* bindings, std::size_t bindingCount)
{
const auto& layoutInfo = m_owner.GetLayoutInfo();
for (const Binding& binding : bindings)
for (std::size_t i = 0; i < bindingCount; ++i)
{
const Binding& binding = bindings[i];
assert(binding.bindingIndex < layoutInfo.bindings.size());
const auto& bindingDesc = layoutInfo.bindings[binding.bindingIndex];

View File

@@ -13,14 +13,16 @@
namespace Nz
{
void VulkanShaderBinding::Update(std::initializer_list<Binding> bindings)
void VulkanShaderBinding::Update(const Binding* bindings, std::size_t bindingCount)
{
StackVector<VkDescriptorBufferInfo> bufferBinding = NazaraStackVector(VkDescriptorBufferInfo, bindings.size());
StackVector<VkDescriptorImageInfo> imageBinding = NazaraStackVector(VkDescriptorImageInfo, bindings.size());
StackVector<VkWriteDescriptorSet> writeOps = NazaraStackVector(VkWriteDescriptorSet, bindings.size());
StackVector<VkDescriptorBufferInfo> bufferBinding = NazaraStackVector(VkDescriptorBufferInfo, bindingCount);
StackVector<VkDescriptorImageInfo> imageBinding = NazaraStackVector(VkDescriptorImageInfo, bindingCount);
StackVector<VkWriteDescriptorSet> writeOps = NazaraStackVector(VkWriteDescriptorSet, bindingCount);
for (const Binding& binding : bindings)
for (std::size_t i = 0; i < bindingCount; ++i)
{
const Binding& binding = bindings[i];
VkWriteDescriptorSet& writeOp = writeOps.emplace_back();
writeOp.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
writeOp.dstSet = m_descriptorSet;