Replace RenderWindow with swapchains
This commit is contained in:
committed by
Jérôme Leclercq
parent
8db1c04568
commit
18851c9185
@@ -1,34 +0,0 @@
|
||||
// Copyright (C) 2022 Jérôme "Lynix" Leclercq (lynix680@gmail.com)
|
||||
// This file is part of the "Nazara Engine - OpenGL renderer"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef NAZARA_OPENGLRENDERER_DUMMYSURFACE_HPP
|
||||
#define NAZARA_OPENGLRENDERER_DUMMYSURFACE_HPP
|
||||
|
||||
#include <Nazara/Prerequisites.hpp>
|
||||
#include <Nazara/OpenGLRenderer/Config.hpp>
|
||||
#include <Nazara/Renderer/RenderSurface.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class NAZARA_OPENGLRENDERER_API DummySurface : public RenderSurface
|
||||
{
|
||||
public:
|
||||
DummySurface() = default;
|
||||
~DummySurface() = default;
|
||||
|
||||
bool Create(WindowHandle handle) override;
|
||||
void Destroy() override;
|
||||
|
||||
inline WindowHandle GetWindowHandle() const;
|
||||
|
||||
private:
|
||||
WindowHandle m_handle;
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/OpenGLRenderer/DummySurface.inl>
|
||||
|
||||
#endif // NAZARA_OPENGLRENDERER_DUMMYSURFACE_HPP
|
||||
@@ -1,16 +0,0 @@
|
||||
// Copyright (C) 2022 Jérôme "Lynix" Leclercq (lynix680@gmail.com)
|
||||
// This file is part of the "Nazara Engine - OpenGL renderer"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#include <Nazara/OpenGLRenderer/DummySurface.hpp>
|
||||
#include <Nazara/OpenGLRenderer/Debug.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline WindowHandle DummySurface::GetWindowHandle() const
|
||||
{
|
||||
return m_handle;
|
||||
}
|
||||
}
|
||||
|
||||
#include <Nazara/OpenGLRenderer/DebugOff.hpp>
|
||||
@@ -45,6 +45,7 @@ namespace Nz
|
||||
std::shared_ptr<RenderPipelineLayout> InstantiateRenderPipelineLayout(RenderPipelineLayoutInfo pipelineLayoutInfo) override;
|
||||
std::shared_ptr<ShaderModule> InstantiateShaderModule(nzsl::ShaderStageTypeFlags shaderStages, const nzsl::Ast::Module& shaderModule, const nzsl::ShaderWriter::States& states) override;
|
||||
std::shared_ptr<ShaderModule> InstantiateShaderModule(nzsl::ShaderStageTypeFlags shaderStages, ShaderLanguage lang, const void* source, std::size_t sourceSize, const nzsl::ShaderWriter::States& states) override;
|
||||
std::shared_ptr<Swapchain> InstantiateSwapchain(WindowHandle windowHandle, const Vector2ui& windowSize, const SwapchainParameters& parameters) override;
|
||||
std::shared_ptr<Texture> InstantiateTexture(const TextureInfo& params) override;
|
||||
std::shared_ptr<TextureSampler> InstantiateTextureSampler(const TextureSamplerInfo& params) override;
|
||||
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
namespace Nz
|
||||
{
|
||||
class OpenGLCommandBuffer;
|
||||
class OpenGLRenderWindow;
|
||||
class OpenGLSwapchain;
|
||||
|
||||
class NAZARA_OPENGLRENDERER_API OpenGLRenderImage : public RenderImage
|
||||
{
|
||||
public:
|
||||
OpenGLRenderImage(OpenGLRenderWindow& owner);
|
||||
OpenGLRenderImage(OpenGLSwapchain& owner);
|
||||
|
||||
void Execute(const FunctionRef<void(CommandBufferBuilder& builder)>& callback, QueueTypeFlags queueTypeFlags) override;
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace Nz
|
||||
void SubmitCommandBuffer(CommandBuffer* commandBuffer, QueueTypeFlags queueTypeFlags) override;
|
||||
|
||||
private:
|
||||
OpenGLRenderWindow& m_owner;
|
||||
OpenGLSwapchain& m_owner;
|
||||
OpenGLUploadPool m_uploadPool;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -22,9 +22,6 @@ namespace Nz
|
||||
OpenGLRenderer() = default;
|
||||
~OpenGLRenderer();
|
||||
|
||||
std::unique_ptr<RenderSurface> CreateRenderSurfaceImpl() override;
|
||||
std::unique_ptr<RenderWindowImpl> CreateRenderWindowImpl(RenderWindow& owner) override;
|
||||
|
||||
std::shared_ptr<RenderDevice> InstanciateRenderDevice(std::size_t deviceIndex, const RenderDeviceFeatures& enabledFeatures) override;
|
||||
|
||||
RenderAPI QueryAPI() const override;
|
||||
|
||||
@@ -14,23 +14,21 @@
|
||||
#include <Nazara/OpenGLRenderer/OpenGLRenderPass.hpp>
|
||||
#include <Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.hpp>
|
||||
#include <Nazara/OpenGLRenderer/Wrapper/Context.hpp>
|
||||
#include <Nazara/Renderer/RenderWindowImpl.hpp>
|
||||
#include <Nazara/Renderer/Swapchain.hpp>
|
||||
#include <Nazara/Renderer/SwapchainParameters.hpp>
|
||||
#include <optional>
|
||||
#include <vector>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class RenderWindow;
|
||||
|
||||
class NAZARA_OPENGLRENDERER_API OpenGLRenderWindow final : public RenderWindowImpl
|
||||
class NAZARA_OPENGLRENDERER_API OpenGLSwapchain final : public Swapchain
|
||||
{
|
||||
public:
|
||||
OpenGLRenderWindow(RenderWindow& owner);
|
||||
~OpenGLRenderWindow() = default;
|
||||
OpenGLSwapchain(OpenGLDevice& device, WindowHandle windowHandle, const Vector2ui& windowSize, const SwapchainParameters& parameters);
|
||||
~OpenGLSwapchain() = default;
|
||||
|
||||
RenderFrame Acquire() override;
|
||||
RenderFrame AcquireFrame() override;
|
||||
|
||||
bool Create(RendererImpl* renderer, RenderSurface* surface, const RenderWindowParameters& parameters) override;
|
||||
std::shared_ptr<CommandPool> CreateCommandPool(QueueType queueType) override;
|
||||
|
||||
inline GL::Context& GetContext();
|
||||
@@ -39,6 +37,8 @@ namespace Nz
|
||||
const OpenGLRenderPass& GetRenderPass() const override;
|
||||
const Vector2ui& GetSize() const override;
|
||||
|
||||
void NotifyResize(const Vector2ui& newSize) override;
|
||||
|
||||
void Present();
|
||||
|
||||
private:
|
||||
@@ -47,11 +47,11 @@ namespace Nz
|
||||
std::vector<std::unique_ptr<OpenGLRenderImage>> m_renderImage;
|
||||
std::unique_ptr<GL::Context> m_context;
|
||||
OpenGLWindowFramebuffer m_framebuffer;
|
||||
RenderWindow& m_owner;
|
||||
Vector2ui m_size;
|
||||
bool m_sizeInvalidated;
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/OpenGLRenderer/OpenGLRenderWindow.inl>
|
||||
#include <Nazara/OpenGLRenderer/OpenGLSwapchain.inl>
|
||||
|
||||
#endif // NAZARA_OPENGLRENDERER_OPENGLRENDERWINDOW_HPP
|
||||
@@ -2,13 +2,13 @@
|
||||
// This file is part of the "Nazara Engine - OpenGL renderer"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#include <Nazara/OpenGLRenderer/OpenGLRenderWindow.hpp>
|
||||
#include <Nazara/OpenGLRenderer/OpenGLSwapchain.hpp>
|
||||
#include <cassert>
|
||||
#include <Nazara/OpenGLRenderer/Debug.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline GL::Context& OpenGLRenderWindow::GetContext()
|
||||
inline GL::Context& OpenGLSwapchain::GetContext()
|
||||
{
|
||||
assert(m_context);
|
||||
return *m_context;
|
||||
@@ -12,12 +12,12 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class OpenGLRenderWindow;
|
||||
class OpenGLSwapchain;
|
||||
|
||||
class NAZARA_OPENGLRENDERER_API OpenGLWindowFramebuffer : public OpenGLFramebuffer
|
||||
{
|
||||
public:
|
||||
inline OpenGLWindowFramebuffer(OpenGLRenderWindow& renderWindow);
|
||||
inline OpenGLWindowFramebuffer(OpenGLSwapchain& renderWindow);
|
||||
OpenGLWindowFramebuffer(const OpenGLWindowFramebuffer&) = delete;
|
||||
OpenGLWindowFramebuffer(OpenGLWindowFramebuffer&&) noexcept = default;
|
||||
~OpenGLWindowFramebuffer() = default;
|
||||
@@ -34,7 +34,7 @@ namespace Nz
|
||||
OpenGLWindowFramebuffer& operator=(OpenGLWindowFramebuffer&&) = delete;
|
||||
|
||||
private:
|
||||
OpenGLRenderWindow& m_renderWindow;
|
||||
OpenGLSwapchain& m_renderWindow;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline OpenGLWindowFramebuffer::OpenGLWindowFramebuffer(OpenGLRenderWindow& renderWindow) :
|
||||
inline OpenGLWindowFramebuffer::OpenGLWindowFramebuffer(OpenGLSwapchain& renderWindow) :
|
||||
OpenGLFramebuffer(FramebufferType::Window),
|
||||
m_renderWindow(renderWindow)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user