Renderer/RenderTarget: Add size method and signal

This commit is contained in:
Jérôme Leclercq
2021-07-10 11:49:35 +02:00
parent 9854ebe950
commit c6611fcb9f
12 changed files with 62 additions and 108 deletions

View File

@@ -1,40 +0,0 @@
// Copyright (C) 201 Jérôme Leclercq
// This file is part of the "Nazara Engine - Vulkan Renderer"
// For conditions of distribution and use, see copyright notice in Config.hpp
#pragma once
#ifndef NAZARA_VULKANRENDERER_RENDERTARGET_HPP
#define NAZARA_VULKANRENDERER_RENDERTARGET_HPP
#include <Nazara/Prerequisites.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/VulkanRenderer/Config.hpp>
#include <Nazara/VulkanRenderer/Wrapper/Framebuffer.hpp>
#include <Nazara/VulkanRenderer/Wrapper/RenderPass.hpp>
#include <Nazara/VulkanRenderer/Wrapper/Semaphore.hpp>
#include <unordered_map>
#include <vulkan/vulkan_core.h>
namespace Nz
{
class NAZARA_VULKANRENDERER_API VkRenderTarget
{
public:
VkRenderTarget() = default;
VkRenderTarget(const VkRenderTarget&) = delete;
VkRenderTarget(VkRenderTarget&&) = delete; ///TOOD?
virtual ~VkRenderTarget();
VkRenderTarget& operator=(const VkRenderTarget&) = delete;
VkRenderTarget& operator=(VkRenderTarget&&) = delete; ///TOOD?
// Signals:
NazaraSignal(OnRenderTargetRelease, const VkRenderTarget* /*renderTarget*/);
NazaraSignal(OnRenderTargetSizeChange, const VkRenderTarget* /*renderTarget*/);
};
}
#include <Nazara/VulkanRenderer/VkRenderTarget.inl>
#endif // NAZARA_VULKANRENDERER_RENDERTARGET_HPP

View File

@@ -1,12 +0,0 @@
// Copyright (C) 2020 Jérôme Leclercq
// 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/VkRenderTarget.hpp>
#include <Nazara/VulkanRenderer/Debug.hpp>
namespace Nz
{
}
#include <Nazara/VulkanRenderer/DebugOff.hpp>

View File

@@ -18,12 +18,12 @@
namespace Nz
{
class VkRenderWindow;
class VulkanRenderWindow;
class NAZARA_VULKANRENDERER_API VulkanRenderImage : public RenderImage
{
public:
VulkanRenderImage(VkRenderWindow& owner);
VulkanRenderImage(VulkanRenderWindow& owner);
VulkanRenderImage(const VulkanRenderImage&) = delete;
VulkanRenderImage(VulkanRenderImage&&) noexcept = default;
~VulkanRenderImage();
@@ -50,7 +50,7 @@ namespace Nz
std::size_t m_currentCommandBuffer;
std::vector<Vk::AutoCommandBuffer> m_inFlightCommandBuffers;
std::vector<VkCommandBuffer> m_graphicalCommandsBuffers;
VkRenderWindow& m_owner;
VulkanRenderWindow& m_owner;
Vk::CommandPool m_commandPool;
Vk::Fence m_inFlightFence;
Vk::Semaphore m_imageAvailableSemaphore;

View File

@@ -19,7 +19,6 @@
#include <Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp>
#include <Nazara/VulkanRenderer/VulkanRenderImage.hpp>
#include <Nazara/VulkanRenderer/VulkanRenderPass.hpp>
#include <Nazara/VulkanRenderer/VkRenderTarget.hpp>
#include <Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp>
#include <Nazara/VulkanRenderer/Wrapper/CommandPool.hpp>
#include <Nazara/VulkanRenderer/Wrapper/Device.hpp>
@@ -34,13 +33,13 @@
namespace Nz
{
class NAZARA_VULKANRENDERER_API VkRenderWindow : public VkRenderTarget, public RenderWindowImpl
class NAZARA_VULKANRENDERER_API VulkanRenderWindow : public RenderWindowImpl
{
public:
VkRenderWindow(RenderWindow& owner);
VkRenderWindow(const VkRenderWindow&) = delete;
VkRenderWindow(VkRenderWindow&&) = delete; ///TODO
~VkRenderWindow();
VulkanRenderWindow(RenderWindow& owner);
VulkanRenderWindow(const VulkanRenderWindow&) = delete;
VulkanRenderWindow(VulkanRenderWindow&&) = delete; ///TODO
~VulkanRenderWindow();
RenderFrame Acquire() override;
@@ -53,13 +52,14 @@ namespace Nz
inline VulkanDevice& GetDevice();
inline const VulkanDevice& GetDevice() const;
inline Vk::QueueHandle& GetGraphicsQueue();
inline const VulkanRenderPass& GetRenderPass() const override;
const VulkanRenderPass& GetRenderPass() const override;
const Vector2ui& GetSize() const override;
inline const Vk::Swapchain& GetSwapchain() const;
void Present(UInt32 imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE);
VkRenderWindow& operator=(const VkRenderWindow&) = delete;
VkRenderWindow& operator=(VkRenderWindow&&) = delete; ///TODO
VulkanRenderWindow& operator=(const VulkanRenderWindow&) = delete;
VulkanRenderWindow& operator=(VulkanRenderWindow&&) = delete; ///TODO
private:
bool CreateSwapchain(Vk::Surface& surface, const Vector2ui& size);
@@ -90,6 +90,6 @@ namespace Nz
};
}
#include <Nazara/VulkanRenderer/VkRenderWindow.inl>
#include <Nazara/VulkanRenderer/VulkanRenderWindow.inl>
#endif // NAZARA_VULKANRENDERER_RENDERWINDOW_HPP

View File

@@ -2,32 +2,27 @@
// 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/VkRenderWindow.hpp>
#include <Nazara/VulkanRenderer/VulkanRenderWindow.hpp>
#include <Nazara/VulkanRenderer/Debug.hpp>
namespace Nz
{
inline VulkanDevice& VkRenderWindow::GetDevice()
inline VulkanDevice& VulkanRenderWindow::GetDevice()
{
return *m_device;
}
inline const VulkanDevice& VkRenderWindow::GetDevice() const
inline const VulkanDevice& VulkanRenderWindow::GetDevice() const
{
return *m_device;
}
inline Vk::QueueHandle& VkRenderWindow::GetGraphicsQueue()
inline Vk::QueueHandle& VulkanRenderWindow::GetGraphicsQueue()
{
return m_graphicsQueue;
}
inline const VulkanRenderPass& VkRenderWindow::GetRenderPass() const
{
return *m_renderPass;
}
inline const Vk::Swapchain& VkRenderWindow::GetSwapchain() const
inline const Vk::Swapchain& VulkanRenderWindow::GetSwapchain() const
{
return m_swapchain;
}