// Copyright (C) 2015 Jérôme Leclercq // This file is part of the "Nazara Engine - Vulkan" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_RENDERWINDOW_HPP #define NAZARA_RENDERWINDOW_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Nz { class NAZARA_VULKAN_API RenderWindow : public RenderTarget, public Window { public: RenderWindow(); RenderWindow(VideoMode mode, const String& title, UInt32 style = WindowStyle_Default); RenderWindow(WindowHandle handle); RenderWindow(const RenderWindow&) = delete; RenderWindow(RenderWindow&&) = delete; ///TODO virtual ~RenderWindow(); bool Acquire(UInt32* index) const override; void BuildPreRenderCommands(UInt32 imageIndex, Vk::CommandBuffer& commandBuffer) override; void BuildPostRenderCommands(UInt32 imageIndex, Vk::CommandBuffer& commandBuffer) override; const Vk::Framebuffer& GetFrameBuffer(UInt32 imageIndex) const override; UInt32 GetFramebufferCount() const; bool Create(VideoMode mode, const String& title, UInt32 style = WindowStyle_Default); bool Create(WindowHandle handle); const Vk::DeviceHandle& GetDevice() const; UInt32 GetPresentableFamilyQueue() const; const Vk::Surface& GetSurface() const; const Vk::Swapchain& GetSwapchain() const; void Present(UInt32 imageIndex) override; bool IsValid() const; void SetPhysicalDevice(VkPhysicalDevice device); RenderWindow& operator=(const RenderWindow&) = delete; RenderWindow& operator=(RenderWindow&&) = delete; ///TODO private: bool OnWindowCreated() override; void OnWindowDestroy() override; void OnWindowResized() override; bool SetupCommandBuffers(); bool SetupRenderPass(); bool SetupSwapchain(); Clock m_clock; VkFormat m_colorFormat; VkFormat m_depthFormat; VkColorSpaceKHR m_colorSpace; VkPhysicalDevice m_forcedPhysicalDevice; std::vector m_frameBuffers; Vk::DeviceHandle m_device; Vk::Queue m_presentQueue; Vk::Surface m_surface; Vk::Swapchain m_swapchain; UInt32 m_presentableFamilyQueue; }; } #endif // NAZARA_RENDERWINDOW_HPP