Graphics/Material: Add UpdateBuffers

This commit is contained in:
Jérôme Leclercq
2021-02-15 18:16:19 +01:00
parent d058a127e1
commit 08c2f711b0
3 changed files with 27 additions and 5 deletions

View File

@@ -5,7 +5,9 @@
#include <Nazara/Graphics/Material.hpp>
#include <Nazara/Core/ErrorFlags.hpp>
#include <Nazara/Graphics/BasicMaterial.hpp>
#include <Nazara/Renderer/CommandBufferBuilder.hpp>
#include <Nazara/Renderer/Renderer.hpp>
#include <Nazara/Renderer/UploadPool.hpp>
#include <Nazara/Utility/MaterialData.hpp>
#include <Nazara/Graphics/Debug.hpp>
@@ -53,6 +55,22 @@ namespace Nz
}
}
void Material::UpdateBuffers(UploadPool& uploadPool, CommandBufferBuilder& builder)
{
for (auto& ubo : m_uniformBuffers)
{
if (ubo.dataInvalidated)
{
auto& allocation = uploadPool.Allocate(ubo.data.size());
std::memcpy(allocation.mappedPtr, ubo.data.data(), ubo.data.size());
builder.CopyBuffer(allocation, ubo.buffer.get());
ubo.dataInvalidated = false;
}
}
}
void Material::UpdateShaderBinding(ShaderBinding& shaderBinding) const
{
// TODO: Use StackVector