From 6f87a01fb2da650de5a3623612a79c62071565a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Sun, 20 Jun 2021 13:31:49 +0200 Subject: [PATCH] Graphics: Improve WorldInstance handling --- include/Nazara/Graphics/InstancedRenderable.hpp | 2 +- include/Nazara/Graphics/Model.hpp | 2 +- include/Nazara/Graphics/WorldInstance.hpp | 1 + include/Nazara/Graphics/WorldInstance.inl | 5 +++++ src/Nazara/Graphics/Model.cpp | 2 +- 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/Nazara/Graphics/InstancedRenderable.hpp b/include/Nazara/Graphics/InstancedRenderable.hpp index d4973bc18..aa1966c16 100644 --- a/include/Nazara/Graphics/InstancedRenderable.hpp +++ b/include/Nazara/Graphics/InstancedRenderable.hpp @@ -23,7 +23,7 @@ namespace Nz InstancedRenderable(InstancedRenderable&&) noexcept = default; ~InstancedRenderable(); - virtual void Draw(CommandBufferBuilder& commandBuffer, WorldInstance& instance) const = 0; + virtual void Draw(CommandBufferBuilder& commandBuffer, const WorldInstance& instance) const = 0; InstancedRenderable& operator=(const InstancedRenderable&) = delete; InstancedRenderable& operator=(InstancedRenderable&&) noexcept = default; diff --git a/include/Nazara/Graphics/Model.hpp b/include/Nazara/Graphics/Model.hpp index 8c6297990..96e4fa0ca 100644 --- a/include/Nazara/Graphics/Model.hpp +++ b/include/Nazara/Graphics/Model.hpp @@ -28,7 +28,7 @@ namespace Nz Model(Model&&) noexcept = default; ~Model() = default; - void Draw(CommandBufferBuilder& commandBuffer, WorldInstance& instance) const override; + void Draw(CommandBufferBuilder& commandBuffer, const WorldInstance& instance) const override; const std::shared_ptr& GetIndexBuffer(std::size_t subMeshIndex) const; std::size_t GetIndexCount(std::size_t subMeshIndex) const; diff --git a/include/Nazara/Graphics/WorldInstance.hpp b/include/Nazara/Graphics/WorldInstance.hpp index ea2c0bd93..8699eacd3 100644 --- a/include/Nazara/Graphics/WorldInstance.hpp +++ b/include/Nazara/Graphics/WorldInstance.hpp @@ -31,6 +31,7 @@ namespace Nz inline std::shared_ptr& GetInstanceBuffer(); inline const std::shared_ptr& GetInstanceBuffer() const; inline ShaderBinding& GetShaderBinding(); + inline const ShaderBinding& GetShaderBinding() const; void UpdateBuffers(UploadPool& uploadPool, CommandBufferBuilder& builder); inline void UpdateWorldMatrix(const Matrix4f& worldMatrix); diff --git a/include/Nazara/Graphics/WorldInstance.inl b/include/Nazara/Graphics/WorldInstance.inl index 03c712bae..4bca9a2dd 100644 --- a/include/Nazara/Graphics/WorldInstance.inl +++ b/include/Nazara/Graphics/WorldInstance.inl @@ -23,6 +23,11 @@ namespace Nz return *m_shaderBinding; } + inline const ShaderBinding& WorldInstance::GetShaderBinding() const + { + return *m_shaderBinding; + } + inline void WorldInstance::UpdateWorldMatrix(const Matrix4f& worldMatrix) { m_worldMatrix = worldMatrix; diff --git a/src/Nazara/Graphics/Model.cpp b/src/Nazara/Graphics/Model.cpp index 53924b6dd..de91798d1 100644 --- a/src/Nazara/Graphics/Model.cpp +++ b/src/Nazara/Graphics/Model.cpp @@ -29,7 +29,7 @@ namespace Nz } } - void Model::Draw(CommandBufferBuilder& commandBuffer, WorldInstance& instance) const + void Model::Draw(CommandBufferBuilder& commandBuffer, const WorldInstance& instance) const { commandBuffer.BindShaderBinding(Graphics::WorldBindingSet, instance.GetShaderBinding());