// Copyright (C) 2015 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_RENDERWINDOW_HPP #define NAZARA_VULKANRENDERER_RENDERWINDOW_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Nz { class NAZARA_VULKANRENDERER_API VkRenderWindow : public VkRenderTarget, public RenderWindowImpl { public: VkRenderWindow(); VkRenderWindow(const VkRenderWindow&) = delete; VkRenderWindow(VkRenderWindow&&) = delete; ///TODO virtual ~VkRenderWindow(); bool Acquire(UInt32* index, VkSemaphore signalSemaphore = VK_NULL_HANDLE, VkFence signalFence = VK_NULL_HANDLE) const override; bool Create(RendererImpl* renderer, RenderSurface* surface, const Vector2ui& size, const RenderWindowParameters& parameters) override; inline const Vk::Framebuffer& GetFrameBuffer(UInt32 imageIndex) const override; inline UInt32 GetFramebufferCount() const override; inline VulkanDevice& GetDevice(); inline const VulkanDevice& GetDevice() const; inline UInt32 GetPresentableFamilyQueue() const; inline const Vk::Swapchain& GetSwapchain() const; std::shared_ptr GetRenderDevice() override; void Present(UInt32 imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE) override; VkRenderWindow& operator=(const VkRenderWindow&) = delete; VkRenderWindow& operator=(VkRenderWindow&&) = delete; ///TODO private: bool SetupDepthBuffer(const Vector2ui& size); bool SetupRenderPass(); bool SetupSwapchain(Vk::Surface& surface, const Vector2ui& size); Clock m_clock; VkColorSpaceKHR m_colorSpace; VkFormat m_colorFormat; VkFormat m_depthStencilFormat; VkPhysicalDevice m_physicalDevice; std::shared_ptr m_device; std::vector m_frameBuffers; Vk::DeviceMemory m_depthBufferMemory; Vk::Image m_depthBuffer; Vk::ImageView m_depthBufferView; Vk::Queue m_presentQueue; Vk::Swapchain m_swapchain; UInt32 m_presentableFamilyQueue; }; } #include #endif // NAZARA_VULKANRENDERER_RENDERWINDOW_HPP