Graphics: Replace RenderFrame by RenderResources

This changes makes the whole rendering independent from the RenderFrame acquired from the Swapchain.
This may allow to do offscreen rendering (= without swapchain), or multi-window rendering in the future
This commit is contained in:
Lynix
2023-11-21 23:33:18 +01:00
parent d7d5c09428
commit 1e81b38c0f
66 changed files with 213 additions and 196 deletions

View File

@@ -104,9 +104,9 @@ namespace Nz
}
}
void DebugDrawer::Prepare(RenderFrame& renderFrame)
void DebugDrawer::Prepare(RenderResources& renderResources)
{
UploadPool& uploadPool = renderFrame.GetUploadPool();
UploadPool& uploadPool = renderResources.GetUploadPool();
if (!m_lineVertices.empty())
{
@@ -171,7 +171,7 @@ namespace Nz
if (m_viewerDataUpdated || !m_pendingUploads.empty())
{
renderFrame.Execute([&](CommandBufferBuilder& builder)
renderResources.Execute([&](CommandBufferBuilder& builder)
{
builder.BeginDebugRegion("Debug drawer upload", Color::Yellow());
{
@@ -196,12 +196,12 @@ namespace Nz
m_viewerDataUpdated = false;
}
void DebugDrawer::Reset(RenderFrame& renderFrame)
void DebugDrawer::Reset(RenderResources& renderResources)
{
if (m_currentViewerData.binding)
{
// keep pipeline layout alive as needs to stay alive until all shader bindings have been freed
renderFrame.PushReleaseCallback([pool = m_dataPool, data = std::move(m_currentViewerData), pipelineLayout = m_renderPipelineLayout]() mutable
renderResources.PushReleaseCallback([pool = m_dataPool, data = std::move(m_currentViewerData), pipelineLayout = m_renderPipelineLayout]() mutable
{
pool->viewerData.push_back(std::move(data));
});
@@ -210,7 +210,7 @@ namespace Nz
for (auto& drawCall : m_drawCalls)
{
renderFrame.PushReleaseCallback([pool = m_dataPool, buffer = std::move(drawCall.vertexBuffer)]() mutable
renderResources.PushReleaseCallback([pool = m_dataPool, buffer = std::move(drawCall.vertexBuffer)]() mutable
{
pool->vertexBuffers.push_back(std::move(buffer));
});

View File

@@ -2,15 +2,15 @@
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/TransientResources.hpp>
#include <Nazara/Renderer/RenderResources.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz
{
TransientResources::~TransientResources()
RenderResources::~RenderResources()
{
FlushReleaseQueue();
}
TransientResources::Releasable::~Releasable() = default;
RenderResources::Releasable::~Releasable() = default;
}