diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 7d7956a12..a87fdaf08 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -99,6 +99,7 @@ namespace Ndk sceneData.background = m_background; sceneData.viewer = &camComponent; + m_renderTechnique.Clear(sceneData); m_renderTechnique.Draw(sceneData); } } diff --git a/include/Nazara/Graphics/AbstractRenderTechnique.hpp b/include/Nazara/Graphics/AbstractRenderTechnique.hpp index 5f268275e..d13ac88ee 100644 --- a/include/Nazara/Graphics/AbstractRenderTechnique.hpp +++ b/include/Nazara/Graphics/AbstractRenderTechnique.hpp @@ -28,6 +28,7 @@ namespace Nz AbstractRenderTechnique(AbstractRenderTechnique&&) = default; virtual ~AbstractRenderTechnique(); + virtual void Clear(const SceneData& sceneData) const = 0; virtual bool Draw(const SceneData& sceneData) const = 0; virtual void EnableInstancing(bool instancing); diff --git a/include/Nazara/Graphics/DeferredRenderTechnique.hpp b/include/Nazara/Graphics/DeferredRenderTechnique.hpp index 5d371b94f..99d1fc813 100644 --- a/include/Nazara/Graphics/DeferredRenderTechnique.hpp +++ b/include/Nazara/Graphics/DeferredRenderTechnique.hpp @@ -32,6 +32,7 @@ namespace Nz DeferredRenderTechnique(); ~DeferredRenderTechnique(); + void Clear(const SceneData& sceneData) const override; bool Draw(const SceneData& sceneData) const override; void EnablePass(RenderPassType renderPass, int position, bool enable); diff --git a/include/Nazara/Graphics/ForwardRenderTechnique.hpp b/include/Nazara/Graphics/ForwardRenderTechnique.hpp index 920a6c0bd..6881ac2d7 100644 --- a/include/Nazara/Graphics/ForwardRenderTechnique.hpp +++ b/include/Nazara/Graphics/ForwardRenderTechnique.hpp @@ -24,6 +24,7 @@ namespace Nz ForwardRenderTechnique(); ~ForwardRenderTechnique() = default; + void Clear(const SceneData& sceneData) const override; bool Draw(const SceneData& sceneData) const override; unsigned int GetMaxLightPassPerObject() const; diff --git a/src/Nazara/Graphics/DeferredRenderTechnique.cpp b/src/Nazara/Graphics/DeferredRenderTechnique.cpp index 63342363c..a6956cdf8 100644 --- a/src/Nazara/Graphics/DeferredRenderTechnique.cpp +++ b/src/Nazara/Graphics/DeferredRenderTechnique.cpp @@ -204,6 +204,11 @@ namespace Nz DeferredRenderTechnique::~DeferredRenderTechnique() = default; + void DeferredRenderTechnique::Clear(const SceneData& sceneData) const + { + NazaraUnused(sceneData); + } + bool DeferredRenderTechnique::Draw(const SceneData& sceneData) const { NazaraAssert(sceneData.viewer, "Invalid viewer"); diff --git a/src/Nazara/Graphics/ForwardRenderTechnique.cpp b/src/Nazara/Graphics/ForwardRenderTechnique.cpp index 2db03b7f9..b2a63611d 100644 --- a/src/Nazara/Graphics/ForwardRenderTechnique.cpp +++ b/src/Nazara/Graphics/ForwardRenderTechnique.cpp @@ -49,18 +49,21 @@ namespace Nz m_spriteBuffer.Reset(VertexDeclaration::Get(VertexLayout_XYZ_Color_UV), &m_vertexBuffer); } - bool ForwardRenderTechnique::Draw(const SceneData& sceneData) const + void ForwardRenderTechnique::Clear(const SceneData& sceneData) const { - NazaraAssert(sceneData.viewer, "Invalid viewer"); - - m_renderQueue.Sort(sceneData.viewer); - Renderer::Enable(RendererParameter_DepthBuffer, true); Renderer::Enable(RendererParameter_DepthWrite, true); Renderer::Clear(RendererBuffer_Depth); if (sceneData.background) sceneData.background->Draw(sceneData.viewer); + } + + bool ForwardRenderTechnique::Draw(const SceneData& sceneData) const + { + NazaraAssert(sceneData.viewer, "Invalid viewer"); + + m_renderQueue.Sort(sceneData.viewer); for (auto& pair : m_renderQueue.layers) {