// Copyright (C) 2021 Jérôme "Lynix" Leclercq (lynix680@gmail.com) // 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_HPP #define NAZARA_VULKANRENDERER_HPP #include #include #include #include #include #include #include #include #include namespace Nz { class NAZARA_VULKANRENDERER_API VulkanRenderer : public RendererImpl { public: VulkanRenderer() = default; ~VulkanRenderer(); std::unique_ptr CreateRenderSurfaceImpl() override; std::unique_ptr CreateRenderWindowImpl(RenderWindow& owner) override; std::shared_ptr InstanciateRenderDevice(std::size_t deviceIndex, const RenderDeviceFeatures& enabledFeatures) override; RenderAPI QueryAPI() const override; std::string QueryAPIString() const override; UInt32 QueryAPIVersion() const override; const std::vector& QueryRenderDevices() const override; bool Prepare(const ParameterList& parameters) override; static constexpr UInt32 APIVersion = VK_API_VERSION_1_2; private: std::list m_devices; std::vector m_deviceInfos; ParameterList m_initializationParameters; Vk::Instance m_instance; }; } #include #endif // NAZARA_VULKANRENDERER_HPP