Renderer/Framebuffer: Add GetType (and rework backend internals)
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
#include <Nazara/Renderer/RenderWindowImpl.hpp>
|
||||
#include <Nazara/VulkanRenderer/Config.hpp>
|
||||
#include <Nazara/VulkanRenderer/VulkanDevice.hpp>
|
||||
#include <Nazara/VulkanRenderer/VulkanMultipleFramebuffer.hpp>
|
||||
#include <Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp>
|
||||
#include <Nazara/VulkanRenderer/VulkanRenderImage.hpp>
|
||||
#include <Nazara/VulkanRenderer/VulkanRenderPass.hpp>
|
||||
#include <Nazara/VulkanRenderer/VkRenderTarget.hpp>
|
||||
@@ -48,7 +48,7 @@ namespace Nz
|
||||
|
||||
std::shared_ptr<CommandPool> CreateCommandPool(QueueType queueType) override;
|
||||
|
||||
inline const VulkanMultipleFramebuffer& GetFramebuffer() const override;
|
||||
inline const VulkanWindowFramebuffer& GetFramebuffer() const override;
|
||||
inline VulkanDevice& GetDevice();
|
||||
inline const VulkanDevice& GetDevice() const;
|
||||
inline Vk::QueueHandle& GetGraphicsQueue();
|
||||
@@ -67,7 +67,7 @@ namespace Nz
|
||||
bool SetupRenderPass();
|
||||
bool SetupSwapchain(const Vk::PhysicalDevice& deviceInfo, Vk::Surface& surface, const Vector2ui& size);
|
||||
|
||||
std::optional<VulkanMultipleFramebuffer> m_framebuffer;
|
||||
std::optional<VulkanWindowFramebuffer> m_framebuffer;
|
||||
std::optional<VulkanRenderPass> m_renderPass;
|
||||
std::shared_ptr<VulkanDevice> m_device;
|
||||
std::size_t m_currentFrame;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline const VulkanMultipleFramebuffer& VkRenderWindow::GetFramebuffer() const
|
||||
inline const VulkanWindowFramebuffer& VkRenderWindow::GetFramebuffer() const
|
||||
{
|
||||
return *m_framebuffer;
|
||||
}
|
||||
|
||||
@@ -17,24 +17,13 @@ namespace Nz
|
||||
class NAZARA_VULKANRENDERER_API VulkanFramebuffer : public Framebuffer
|
||||
{
|
||||
public:
|
||||
enum class Type
|
||||
{
|
||||
Multiple,
|
||||
Single
|
||||
};
|
||||
|
||||
inline VulkanFramebuffer(Type type);
|
||||
using Framebuffer::Framebuffer;
|
||||
VulkanFramebuffer(const VulkanFramebuffer&) = delete;
|
||||
VulkanFramebuffer(VulkanFramebuffer&&) noexcept = default;
|
||||
~VulkanFramebuffer() = default;
|
||||
|
||||
inline Type GetType() const;
|
||||
|
||||
VulkanFramebuffer& operator=(const VulkanFramebuffer&) = delete;
|
||||
VulkanFramebuffer& operator=(VulkanFramebuffer&&) noexcept = default;
|
||||
|
||||
private:
|
||||
Type m_type;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -7,15 +7,6 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline VulkanFramebuffer::VulkanFramebuffer(Type type) :
|
||||
m_type(type)
|
||||
{
|
||||
}
|
||||
|
||||
inline auto VulkanFramebuffer::GetType() const -> Type
|
||||
{
|
||||
return m_type;
|
||||
}
|
||||
}
|
||||
|
||||
#include <Nazara/VulkanRenderer/DebugOff.hpp>
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
// Copyright (C) 2020 Jérôme Leclercq
|
||||
// This file is part of the "Nazara Engine - Renderer module"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef NAZARA_VULKANRENDERER_VULKANMULTIPLEFRAMEBUFFER_HPP
|
||||
#define NAZARA_VULKANRENDERER_VULKANMULTIPLEFRAMEBUFFER_HPP
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanFramebuffer.hpp>
|
||||
#include <vector>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class NAZARA_VULKANRENDERER_API VulkanMultipleFramebuffer final : public VulkanFramebuffer
|
||||
{
|
||||
public:
|
||||
inline VulkanMultipleFramebuffer(Vk::Framebuffer* framebuffers, std::size_t count);
|
||||
VulkanMultipleFramebuffer(const VulkanMultipleFramebuffer&) = delete;
|
||||
VulkanMultipleFramebuffer(VulkanMultipleFramebuffer&&) noexcept = default;
|
||||
~VulkanMultipleFramebuffer() = default;
|
||||
|
||||
inline const Vk::Framebuffer& GetFramebuffer(std::size_t index) const;
|
||||
inline std::size_t GetFramebufferCount() const;
|
||||
|
||||
VulkanMultipleFramebuffer& operator=(const VulkanMultipleFramebuffer&) = delete;
|
||||
VulkanMultipleFramebuffer& operator=(VulkanMultipleFramebuffer&&) noexcept = default;
|
||||
|
||||
private:
|
||||
std::vector<Vk::Framebuffer> m_framebuffers;
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanMultipleFramebuffer.inl>
|
||||
|
||||
#endif // NAZARA_VULKANRENDERER_VULKANMULTIPLEFRAMEBUFFER_HPP
|
||||
@@ -1,39 +0,0 @@
|
||||
// Copyright (C) 2020 Jérôme Leclercq
|
||||
// This file is part of the "Nazara Engine - Renderer module"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef NAZARA_VULKANRENDERER_VULKANSINGLEFRAMEBUFFER_HPP
|
||||
#define NAZARA_VULKANRENDERER_VULKANSINGLEFRAMEBUFFER_HPP
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanFramebuffer.hpp>
|
||||
#include <memory>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class RenderPass;
|
||||
class Texture;
|
||||
|
||||
class NAZARA_VULKANRENDERER_API VulkanSingleFramebuffer final : public VulkanFramebuffer
|
||||
{
|
||||
public:
|
||||
VulkanSingleFramebuffer(Vk::Device& device, unsigned int width, unsigned int height, const std::shared_ptr<RenderPass>& renderPass, const std::vector<std::shared_ptr<Texture>>& attachments);
|
||||
VulkanSingleFramebuffer(const VulkanSingleFramebuffer&) = delete;
|
||||
VulkanSingleFramebuffer(VulkanSingleFramebuffer&&) = delete;
|
||||
~VulkanSingleFramebuffer() = default;
|
||||
|
||||
inline Vk::Framebuffer& GetFramebuffer();
|
||||
inline const Vk::Framebuffer& GetFramebuffer() const;
|
||||
|
||||
VulkanSingleFramebuffer& operator=(const VulkanSingleFramebuffer&) = delete;
|
||||
VulkanSingleFramebuffer& operator=(VulkanSingleFramebuffer&&) = delete;
|
||||
|
||||
private:
|
||||
Vk::Framebuffer m_framebuffer;
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanSingleFramebuffer.inl>
|
||||
|
||||
#endif // NAZARA_VULKANRENDERER_VULKANSINGLEFRAMEBUFFER_HPP
|
||||
39
include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.hpp
Normal file
39
include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.hpp
Normal file
@@ -0,0 +1,39 @@
|
||||
// Copyright (C) 2020 Jérôme Leclercq
|
||||
// This file is part of the "Nazara Engine - Renderer module"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef NAZARA_VULKANRENDERER_VULKANTEXTUREFRAMEBUFFER_HPP
|
||||
#define NAZARA_VULKANRENDERER_VULKANTEXTUREFRAMEBUFFER_HPP
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanFramebuffer.hpp>
|
||||
#include <memory>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class RenderPass;
|
||||
class Texture;
|
||||
|
||||
class NAZARA_VULKANRENDERER_API VulkanTextureFramebuffer final : public VulkanFramebuffer
|
||||
{
|
||||
public:
|
||||
VulkanTextureFramebuffer(Vk::Device& device, unsigned int width, unsigned int height, const std::shared_ptr<RenderPass>& renderPass, const std::vector<std::shared_ptr<Texture>>& attachments);
|
||||
VulkanTextureFramebuffer(const VulkanTextureFramebuffer&) = delete;
|
||||
VulkanTextureFramebuffer(VulkanTextureFramebuffer&&) = delete;
|
||||
~VulkanTextureFramebuffer() = default;
|
||||
|
||||
inline Vk::Framebuffer& GetFramebuffer();
|
||||
inline const Vk::Framebuffer& GetFramebuffer() const;
|
||||
|
||||
VulkanTextureFramebuffer& operator=(const VulkanTextureFramebuffer&) = delete;
|
||||
VulkanTextureFramebuffer& operator=(VulkanTextureFramebuffer&&) = delete;
|
||||
|
||||
private:
|
||||
Vk::Framebuffer m_framebuffer;
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanTextureFramebuffer.inl>
|
||||
|
||||
#endif // NAZARA_VULKANRENDERER_VULKANTEXTUREFRAMEBUFFER_HPP
|
||||
@@ -2,17 +2,17 @@
|
||||
// This file is part of the "Nazara Engine - Vulkan Renderer"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanSingleFramebuffer.hpp>
|
||||
#include <Nazara/VulkanRenderer/VulkanTextureFramebuffer.hpp>
|
||||
#include <Nazara/VulkanRenderer/Debug.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline Vk::Framebuffer& VulkanSingleFramebuffer::GetFramebuffer()
|
||||
inline Vk::Framebuffer& VulkanTextureFramebuffer::GetFramebuffer()
|
||||
{
|
||||
return m_framebuffer;
|
||||
}
|
||||
|
||||
inline const Vk::Framebuffer& VulkanSingleFramebuffer::GetFramebuffer() const
|
||||
inline const Vk::Framebuffer& VulkanTextureFramebuffer::GetFramebuffer() const
|
||||
{
|
||||
return m_framebuffer;
|
||||
}
|
||||
36
include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp
Normal file
36
include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp
Normal file
@@ -0,0 +1,36 @@
|
||||
// Copyright (C) 2020 Jérôme Leclercq
|
||||
// This file is part of the "Nazara Engine - Renderer module"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef NAZARA_VULKANRENDERER_VULKANWINDOWFRAMEBUFFER_HPP
|
||||
#define NAZARA_VULKANRENDERER_VULKANWINDOWFRAMEBUFFER_HPP
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanFramebuffer.hpp>
|
||||
#include <vector>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
class NAZARA_VULKANRENDERER_API VulkanWindowFramebuffer final : public VulkanFramebuffer
|
||||
{
|
||||
public:
|
||||
inline VulkanWindowFramebuffer(Vk::Framebuffer* framebuffers, std::size_t count);
|
||||
VulkanWindowFramebuffer(const VulkanWindowFramebuffer&) = delete;
|
||||
VulkanWindowFramebuffer(VulkanWindowFramebuffer&&) noexcept = default;
|
||||
~VulkanWindowFramebuffer() = default;
|
||||
|
||||
inline const Vk::Framebuffer& GetFramebuffer(std::size_t index) const;
|
||||
inline std::size_t GetFramebufferCount() const;
|
||||
|
||||
VulkanWindowFramebuffer& operator=(const VulkanWindowFramebuffer&) = delete;
|
||||
VulkanWindowFramebuffer& operator=(VulkanWindowFramebuffer&&) noexcept = default;
|
||||
|
||||
private:
|
||||
std::vector<Vk::Framebuffer> m_framebuffers;
|
||||
};
|
||||
}
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanWindowFramebuffer.inl>
|
||||
|
||||
#endif // NAZARA_VULKANRENDERER_VULKANWINDOWFRAMEBUFFER_HPP
|
||||
@@ -2,26 +2,26 @@
|
||||
// This file is part of the "Nazara Engine - Vulkan Renderer"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#include <Nazara/VulkanRenderer/VulkanMultipleFramebuffer.hpp>
|
||||
#include <Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp>
|
||||
#include <Nazara/VulkanRenderer/Debug.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline VulkanMultipleFramebuffer::VulkanMultipleFramebuffer(Vk::Framebuffer* framebuffers, std::size_t count) :
|
||||
VulkanFramebuffer(Type::Multiple)
|
||||
inline VulkanWindowFramebuffer::VulkanWindowFramebuffer(Vk::Framebuffer* framebuffers, std::size_t count) :
|
||||
VulkanFramebuffer(FramebufferType::Window)
|
||||
{
|
||||
m_framebuffers.reserve(count);
|
||||
for (std::size_t i = 0; i < count; ++i)
|
||||
m_framebuffers.push_back(std::move(framebuffers[i]));
|
||||
}
|
||||
|
||||
inline const Vk::Framebuffer& Nz::VulkanMultipleFramebuffer::GetFramebuffer(std::size_t index) const
|
||||
inline const Vk::Framebuffer& Nz::VulkanWindowFramebuffer::GetFramebuffer(std::size_t index) const
|
||||
{
|
||||
assert(index < m_framebuffers.size());
|
||||
return m_framebuffers[index];
|
||||
}
|
||||
|
||||
inline std::size_t VulkanMultipleFramebuffer::GetFramebufferCount() const
|
||||
inline std::size_t VulkanWindowFramebuffer::GetFramebufferCount() const
|
||||
{
|
||||
return m_framebuffers.size();
|
||||
}
|
||||
Reference in New Issue
Block a user