// 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 #include #include namespace Nz { VulkanSurface::VulkanSurface() : m_surface(Vulkan::GetInstance()) { } bool VulkanSurface::Create(WindowHandle handle) { bool success = false; #if defined(NAZARA_PLATFORM_WINDOWS) { NazaraAssert(handle.type == WindowManager::Windows, "expected Windows window"); HWND winHandle = reinterpret_cast(handle.windows.window); HINSTANCE instance = reinterpret_cast(GetWindowLongPtrW(winHandle, GWLP_HINSTANCE)); success = m_surface.Create(instance, winHandle); } #else #error This OS is not supported by Vulkan #endif if (!success) { NazaraError("Failed to create Vulkan surface: " + TranslateVulkanError(m_surface.GetLastErrorCode())); return false; } return true; } void VulkanSurface::Destroy() { m_surface.Destroy(); } }