Renderer/RenderTarget: Add size method and signal
This commit is contained in:
parent
9854ebe950
commit
c6611fcb9f
|
|
@ -37,6 +37,7 @@ namespace Nz
|
||||||
const OpenGLFramebuffer& GetFramebuffer(std::size_t i) const override;
|
const OpenGLFramebuffer& GetFramebuffer(std::size_t i) const override;
|
||||||
std::size_t GetFramebufferCount() const override;
|
std::size_t GetFramebufferCount() const override;
|
||||||
const OpenGLRenderPass& GetRenderPass() const override;
|
const OpenGLRenderPass& GetRenderPass() const override;
|
||||||
|
const Vector2ui& GetSize() const override;
|
||||||
|
|
||||||
void Present();
|
void Present();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@
|
||||||
#define NAZARA_RENDERTARGET_HPP
|
#define NAZARA_RENDERTARGET_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequisites.hpp>
|
#include <Nazara/Prerequisites.hpp>
|
||||||
|
#include <Nazara/Core/Signal.hpp>
|
||||||
|
#include <Nazara/Math/Vector2.hpp>
|
||||||
#include <Nazara/Renderer/Config.hpp>
|
#include <Nazara/Renderer/Config.hpp>
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
|
|
@ -24,6 +26,9 @@ namespace Nz
|
||||||
virtual const Framebuffer& GetFramebuffer(std::size_t i) const = 0;
|
virtual const Framebuffer& GetFramebuffer(std::size_t i) const = 0;
|
||||||
virtual std::size_t GetFramebufferCount() const = 0;
|
virtual std::size_t GetFramebufferCount() const = 0;
|
||||||
virtual const RenderPass& GetRenderPass() const = 0;
|
virtual const RenderPass& GetRenderPass() const = 0;
|
||||||
|
virtual const Vector2ui& GetSize() const = 0;
|
||||||
|
|
||||||
|
NazaraSignal(OnRenderTargetSizeChange, const RenderTarget* /*renderTarget*/, const Vector2ui& /*newSize*/);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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>
|
|
||||||
|
|
@ -18,12 +18,12 @@
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
class VkRenderWindow;
|
class VulkanRenderWindow;
|
||||||
|
|
||||||
class NAZARA_VULKANRENDERER_API VulkanRenderImage : public RenderImage
|
class NAZARA_VULKANRENDERER_API VulkanRenderImage : public RenderImage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VulkanRenderImage(VkRenderWindow& owner);
|
VulkanRenderImage(VulkanRenderWindow& owner);
|
||||||
VulkanRenderImage(const VulkanRenderImage&) = delete;
|
VulkanRenderImage(const VulkanRenderImage&) = delete;
|
||||||
VulkanRenderImage(VulkanRenderImage&&) noexcept = default;
|
VulkanRenderImage(VulkanRenderImage&&) noexcept = default;
|
||||||
~VulkanRenderImage();
|
~VulkanRenderImage();
|
||||||
|
|
@ -50,7 +50,7 @@ namespace Nz
|
||||||
std::size_t m_currentCommandBuffer;
|
std::size_t m_currentCommandBuffer;
|
||||||
std::vector<Vk::AutoCommandBuffer> m_inFlightCommandBuffers;
|
std::vector<Vk::AutoCommandBuffer> m_inFlightCommandBuffers;
|
||||||
std::vector<VkCommandBuffer> m_graphicalCommandsBuffers;
|
std::vector<VkCommandBuffer> m_graphicalCommandsBuffers;
|
||||||
VkRenderWindow& m_owner;
|
VulkanRenderWindow& m_owner;
|
||||||
Vk::CommandPool m_commandPool;
|
Vk::CommandPool m_commandPool;
|
||||||
Vk::Fence m_inFlightFence;
|
Vk::Fence m_inFlightFence;
|
||||||
Vk::Semaphore m_imageAvailableSemaphore;
|
Vk::Semaphore m_imageAvailableSemaphore;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@
|
||||||
#include <Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp>
|
#include <Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VulkanRenderImage.hpp>
|
#include <Nazara/VulkanRenderer/VulkanRenderImage.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VulkanRenderPass.hpp>
|
#include <Nazara/VulkanRenderer/VulkanRenderPass.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VkRenderTarget.hpp>
|
|
||||||
#include <Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp>
|
#include <Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp>
|
||||||
#include <Nazara/VulkanRenderer/Wrapper/CommandPool.hpp>
|
#include <Nazara/VulkanRenderer/Wrapper/CommandPool.hpp>
|
||||||
#include <Nazara/VulkanRenderer/Wrapper/Device.hpp>
|
#include <Nazara/VulkanRenderer/Wrapper/Device.hpp>
|
||||||
|
|
@ -34,13 +33,13 @@
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
class NAZARA_VULKANRENDERER_API VkRenderWindow : public VkRenderTarget, public RenderWindowImpl
|
class NAZARA_VULKANRENDERER_API VulkanRenderWindow : public RenderWindowImpl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VkRenderWindow(RenderWindow& owner);
|
VulkanRenderWindow(RenderWindow& owner);
|
||||||
VkRenderWindow(const VkRenderWindow&) = delete;
|
VulkanRenderWindow(const VulkanRenderWindow&) = delete;
|
||||||
VkRenderWindow(VkRenderWindow&&) = delete; ///TODO
|
VulkanRenderWindow(VulkanRenderWindow&&) = delete; ///TODO
|
||||||
~VkRenderWindow();
|
~VulkanRenderWindow();
|
||||||
|
|
||||||
RenderFrame Acquire() override;
|
RenderFrame Acquire() override;
|
||||||
|
|
||||||
|
|
@ -53,13 +52,14 @@ namespace Nz
|
||||||
inline VulkanDevice& GetDevice();
|
inline VulkanDevice& GetDevice();
|
||||||
inline const VulkanDevice& GetDevice() const;
|
inline const VulkanDevice& GetDevice() const;
|
||||||
inline Vk::QueueHandle& GetGraphicsQueue();
|
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;
|
inline const Vk::Swapchain& GetSwapchain() const;
|
||||||
|
|
||||||
void Present(UInt32 imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE);
|
void Present(UInt32 imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE);
|
||||||
|
|
||||||
VkRenderWindow& operator=(const VkRenderWindow&) = delete;
|
VulkanRenderWindow& operator=(const VulkanRenderWindow&) = delete;
|
||||||
VkRenderWindow& operator=(VkRenderWindow&&) = delete; ///TODO
|
VulkanRenderWindow& operator=(VulkanRenderWindow&&) = delete; ///TODO
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool CreateSwapchain(Vk::Surface& surface, const Vector2ui& size);
|
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
|
#endif // NAZARA_VULKANRENDERER_RENDERWINDOW_HPP
|
||||||
|
|
@ -2,32 +2,27 @@
|
||||||
// This file is part of the "Nazara Engine - Vulkan Renderer"
|
// This file is part of the "Nazara Engine - Vulkan Renderer"
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// 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>
|
#include <Nazara/VulkanRenderer/Debug.hpp>
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
inline VulkanDevice& VkRenderWindow::GetDevice()
|
inline VulkanDevice& VulkanRenderWindow::GetDevice()
|
||||||
{
|
{
|
||||||
return *m_device;
|
return *m_device;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const VulkanDevice& VkRenderWindow::GetDevice() const
|
inline const VulkanDevice& VulkanRenderWindow::GetDevice() const
|
||||||
{
|
{
|
||||||
return *m_device;
|
return *m_device;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Vk::QueueHandle& VkRenderWindow::GetGraphicsQueue()
|
inline Vk::QueueHandle& VulkanRenderWindow::GetGraphicsQueue()
|
||||||
{
|
{
|
||||||
return m_graphicsQueue;
|
return m_graphicsQueue;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const VulkanRenderPass& VkRenderWindow::GetRenderPass() const
|
inline const Vk::Swapchain& VulkanRenderWindow::GetSwapchain() const
|
||||||
{
|
|
||||||
return *m_renderPass;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline const Vk::Swapchain& VkRenderWindow::GetSwapchain() const
|
|
||||||
{
|
{
|
||||||
return m_swapchain;
|
return m_swapchain;
|
||||||
}
|
}
|
||||||
|
|
@ -29,6 +29,8 @@ namespace Nz
|
||||||
if (m_size != size)
|
if (m_size != size)
|
||||||
{
|
{
|
||||||
invalidateFramebuffer = true;
|
invalidateFramebuffer = true;
|
||||||
|
|
||||||
|
OnRenderTargetSizeChange(this, size);
|
||||||
m_size = size;
|
m_size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -115,6 +117,11 @@ namespace Nz
|
||||||
return *m_renderPass;
|
return *m_renderPass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Vector2ui& OpenGLRenderWindow::GetSize() const
|
||||||
|
{
|
||||||
|
return m_size;
|
||||||
|
}
|
||||||
|
|
||||||
void OpenGLRenderWindow::Present()
|
void OpenGLRenderWindow::Present()
|
||||||
{
|
{
|
||||||
m_context->SwapBuffers();
|
m_context->SwapBuffers();
|
||||||
|
|
|
||||||
|
|
@ -1,14 +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
|
|
||||||
{
|
|
||||||
VkRenderTarget::~VkRenderTarget()
|
|
||||||
{
|
|
||||||
OnRenderTargetRelease(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
#include <Nazara/VulkanRenderer/VulkanRenderImage.hpp>
|
#include <Nazara/VulkanRenderer/VulkanRenderImage.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VkRenderWindow.hpp>
|
#include <Nazara/VulkanRenderer/VulkanRenderWindow.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VulkanCommandBuffer.hpp>
|
#include <Nazara/VulkanRenderer/VulkanCommandBuffer.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VulkanCommandBufferBuilder.hpp>
|
#include <Nazara/VulkanRenderer/VulkanCommandBufferBuilder.hpp>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
VulkanRenderImage::VulkanRenderImage(VkRenderWindow& owner) :
|
VulkanRenderImage::VulkanRenderImage(VulkanRenderWindow& owner) :
|
||||||
m_owner(owner),
|
m_owner(owner),
|
||||||
m_uploadPool(m_owner.GetDevice(), 2 * 1024 * 1024)
|
m_uploadPool(m_owner.GetDevice(), 2 * 1024 * 1024)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// This file is part of the "Nazara Engine - Renderer module"
|
// This file is part of the "Nazara Engine - Renderer module"
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
#include <Nazara/VulkanRenderer/VkRenderWindow.hpp>
|
#include <Nazara/VulkanRenderer/VulkanRenderWindow.hpp>
|
||||||
#include <Nazara/Core/Error.hpp>
|
#include <Nazara/Core/Error.hpp>
|
||||||
#include <Nazara/Core/ErrorFlags.hpp>
|
#include <Nazara/Core/ErrorFlags.hpp>
|
||||||
#include <Nazara/Core/StackArray.hpp>
|
#include <Nazara/Core/StackArray.hpp>
|
||||||
|
|
@ -19,14 +19,14 @@
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
VkRenderWindow::VkRenderWindow(RenderWindow& owner) :
|
VulkanRenderWindow::VulkanRenderWindow(RenderWindow& owner) :
|
||||||
m_currentFrame(0),
|
m_currentFrame(0),
|
||||||
m_owner(owner),
|
m_owner(owner),
|
||||||
m_shouldRecreateSwapchain(false)
|
m_shouldRecreateSwapchain(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
VkRenderWindow::~VkRenderWindow()
|
VulkanRenderWindow::~VulkanRenderWindow()
|
||||||
{
|
{
|
||||||
if (m_device)
|
if (m_device)
|
||||||
m_device->WaitForIdle();
|
m_device->WaitForIdle();
|
||||||
|
|
@ -37,7 +37,7 @@ namespace Nz
|
||||||
m_swapchain.Destroy();
|
m_swapchain.Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderFrame VkRenderWindow::Acquire()
|
RenderFrame VulkanRenderWindow::Acquire()
|
||||||
{
|
{
|
||||||
bool invalidateFramebuffer = false;
|
bool invalidateFramebuffer = false;
|
||||||
|
|
||||||
|
|
@ -50,6 +50,8 @@ namespace Nz
|
||||||
{
|
{
|
||||||
Vk::Surface& vulkanSurface = static_cast<VulkanSurface*>(m_owner.GetSurface())->GetSurface();
|
Vk::Surface& vulkanSurface = static_cast<VulkanSurface*>(m_owner.GetSurface())->GetSurface();
|
||||||
|
|
||||||
|
OnRenderTargetSizeChange(this, size);
|
||||||
|
|
||||||
if (!CreateSwapchain(vulkanSurface, size))
|
if (!CreateSwapchain(vulkanSurface, size))
|
||||||
throw std::runtime_error("failed to recreate swapchain");
|
throw std::runtime_error("failed to recreate swapchain");
|
||||||
|
|
||||||
|
|
@ -103,7 +105,7 @@ namespace Nz
|
||||||
return RenderFrame(¤tFrame, invalidateFramebuffer, size, imageIndex);
|
return RenderFrame(¤tFrame, invalidateFramebuffer, size, imageIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VkRenderWindow::Create(RendererImpl* /*renderer*/, RenderSurface* surface, const RenderWindowParameters& parameters)
|
bool VulkanRenderWindow::Create(RendererImpl* /*renderer*/, RenderSurface* surface, const RenderWindowParameters& parameters)
|
||||||
{
|
{
|
||||||
std::shared_ptr<VulkanDevice> device = std::static_pointer_cast<VulkanDevice>(m_owner.GetRenderDevice());
|
std::shared_ptr<VulkanDevice> device = std::static_pointer_cast<VulkanDevice>(m_owner.GetRenderDevice());
|
||||||
|
|
||||||
|
|
@ -280,7 +282,7 @@ namespace Nz
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<CommandPool> VkRenderWindow::CreateCommandPool(QueueType queueType)
|
std::shared_ptr<CommandPool> VulkanRenderWindow::CreateCommandPool(QueueType queueType)
|
||||||
{
|
{
|
||||||
UInt32 queueFamilyIndex = [&] {
|
UInt32 queueFamilyIndex = [&] {
|
||||||
switch (queueType)
|
switch (queueType)
|
||||||
|
|
@ -301,18 +303,28 @@ namespace Nz
|
||||||
return std::make_shared<VulkanCommandPool>(*m_device, queueFamilyIndex);
|
return std::make_shared<VulkanCommandPool>(*m_device, queueFamilyIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
const VulkanWindowFramebuffer& VkRenderWindow::GetFramebuffer(std::size_t i) const
|
const VulkanWindowFramebuffer& VulkanRenderWindow::GetFramebuffer(std::size_t i) const
|
||||||
{
|
{
|
||||||
assert(i < m_framebuffers.size());
|
assert(i < m_framebuffers.size());
|
||||||
return m_framebuffers[i];
|
return m_framebuffers[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
std::size_t VkRenderWindow::GetFramebufferCount() const
|
std::size_t VulkanRenderWindow::GetFramebufferCount() const
|
||||||
{
|
{
|
||||||
return std::size_t();
|
return m_framebuffers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VkRenderWindow::Present(UInt32 imageIndex, VkSemaphore waitSemaphore)
|
const VulkanRenderPass& VulkanRenderWindow::GetRenderPass() const
|
||||||
|
{
|
||||||
|
return *m_renderPass;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Vector2ui& VulkanRenderWindow::GetSize() const
|
||||||
|
{
|
||||||
|
return m_swapchainSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VulkanRenderWindow::Present(UInt32 imageIndex, VkSemaphore waitSemaphore)
|
||||||
{
|
{
|
||||||
NazaraAssert(imageIndex < m_inflightFences.size(), "Invalid image index");
|
NazaraAssert(imageIndex < m_inflightFences.size(), "Invalid image index");
|
||||||
|
|
||||||
|
|
@ -344,7 +356,7 @@ namespace Nz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VkRenderWindow::CreateSwapchain(Vk::Surface& surface, const Vector2ui& size)
|
bool VulkanRenderWindow::CreateSwapchain(Vk::Surface& surface, const Vector2ui& size)
|
||||||
{
|
{
|
||||||
assert(m_device);
|
assert(m_device);
|
||||||
if (!SetupSwapchain(m_device->GetPhysicalDeviceInfo(), surface, size))
|
if (!SetupSwapchain(m_device->GetPhysicalDeviceInfo(), surface, size))
|
||||||
|
|
@ -368,7 +380,7 @@ namespace Nz
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VkRenderWindow::SetupDepthBuffer(const Vector2ui& size)
|
bool VulkanRenderWindow::SetupDepthBuffer(const Vector2ui& size)
|
||||||
{
|
{
|
||||||
VkImageCreateInfo imageCreateInfo = {
|
VkImageCreateInfo imageCreateInfo = {
|
||||||
VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType;
|
VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType;
|
||||||
|
|
@ -446,7 +458,7 @@ namespace Nz
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VkRenderWindow::SetupFrameBuffers(const Vector2ui& size)
|
bool VulkanRenderWindow::SetupFrameBuffers(const Vector2ui& size)
|
||||||
{
|
{
|
||||||
UInt32 imageCount = m_swapchain.GetImageCount();
|
UInt32 imageCount = m_swapchain.GetImageCount();
|
||||||
|
|
||||||
|
|
@ -482,7 +494,7 @@ namespace Nz
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VkRenderWindow::SetupRenderPass()
|
bool VulkanRenderWindow::SetupRenderPass()
|
||||||
{
|
{
|
||||||
std::optional<PixelFormat> colorFormat = FromVulkan(m_surfaceFormat.format);
|
std::optional<PixelFormat> colorFormat = FromVulkan(m_surfaceFormat.format);
|
||||||
if (!colorFormat)
|
if (!colorFormat)
|
||||||
|
|
@ -511,7 +523,7 @@ namespace Nz
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VkRenderWindow::SetupSwapchain(const Vk::PhysicalDevice& deviceInfo, Vk::Surface& surface, const Vector2ui& size)
|
bool VulkanRenderWindow::SetupSwapchain(const Vk::PhysicalDevice& deviceInfo, Vk::Surface& surface, const Vector2ui& size)
|
||||||
{
|
{
|
||||||
VkSurfaceCapabilitiesKHR surfaceCapabilities;
|
VkSurfaceCapabilitiesKHR surfaceCapabilities;
|
||||||
if (!surface.GetCapabilities(deviceInfo.physDevice, &surfaceCapabilities))
|
if (!surface.GetCapabilities(deviceInfo.physDevice, &surfaceCapabilities))
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
#include <Nazara/Renderer/RenderDevice.hpp>
|
#include <Nazara/Renderer/RenderDevice.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VulkanBuffer.hpp>
|
#include <Nazara/VulkanRenderer/VulkanBuffer.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VulkanSurface.hpp>
|
#include <Nazara/VulkanRenderer/VulkanSurface.hpp>
|
||||||
#include <Nazara/VulkanRenderer/VkRenderWindow.hpp>
|
#include <Nazara/VulkanRenderer/VulkanRenderWindow.hpp>
|
||||||
#include <Nazara/VulkanRenderer/Wrapper/Loader.hpp>
|
#include <Nazara/VulkanRenderer/Wrapper/Loader.hpp>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
@ -27,7 +27,7 @@ namespace Nz
|
||||||
|
|
||||||
std::unique_ptr<RenderWindowImpl> VulkanRenderer::CreateRenderWindowImpl(RenderWindow& owner)
|
std::unique_ptr<RenderWindowImpl> VulkanRenderer::CreateRenderWindowImpl(RenderWindow& owner)
|
||||||
{
|
{
|
||||||
return std::make_unique<VkRenderWindow>(owner);
|
return std::make_unique<VulkanRenderWindow>(owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<RenderDevice> VulkanRenderer::InstanciateRenderDevice(std::size_t deviceIndex, const RenderDeviceFeatures& enabledFeatures)
|
std::shared_ptr<RenderDevice> VulkanRenderer::InstanciateRenderDevice(std::size_t deviceIndex, const RenderDeviceFeatures& enabledFeatures)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue