| 12 | static char const * EngineName = "Vulkan.hpp"; |
| 13 | |
| 14 | int main() |
| 15 | { |
| 16 | try |
| 17 | { |
| 18 | vk::Instance instance = vk::su::createInstance( AppName, EngineName, {}, vk::su::getInstanceExtensions() ); |
| 19 | #if !defined( NDEBUG ) |
| 20 | vk::DebugUtilsMessengerEXT debugUtilsMessenger = instance.createDebugUtilsMessengerEXT( vk::su::makeDebugUtilsMessengerCreateInfoEXT() ); |
| 21 | #endif |
| 22 | |
| 23 | vk::PhysicalDevice physicalDevice = instance.enumeratePhysicalDevices().front(); |
| 24 | |
| 25 | vk::su::SurfaceData surfaceData( instance, AppName, vk::Extent2D( 64, 64 ) ); |
| 26 | |
| 27 | std::pair<uint32_t, uint32_t> graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex( physicalDevice, surfaceData.surface ); |
| 28 | vk::Device device = vk::su::createDevice( physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions() ); |
| 29 | |
| 30 | vk::su::SwapChainData swapChainData( physicalDevice, |
| 31 | device, |
| 32 | surfaceData.surface, |
| 33 | surfaceData.extent, |
| 34 | vk::ImageUsageFlagBits::eColorAttachment | vk::ImageUsageFlagBits::eTransferSrc, |
| 35 | nullptr, |
| 36 | graphicsAndPresentQueueFamilyIndex.first, |
| 37 | graphicsAndPresentQueueFamilyIndex.second ); |
| 38 | |
| 39 | vk::su::DepthBufferData depthBufferData( physicalDevice, device, vk::Format::eD16Unorm, surfaceData.extent ); |
| 40 | |
| 41 | vk::RenderPass renderPass = vk::su::createRenderPass( device, swapChainData.colorFormat, depthBufferData.format ); |
| 42 | |
| 43 | /* VULKAN_KEY_START */ |
| 44 | |
| 45 | std::array<vk::ImageView, 2> attachments; |
| 46 | attachments[1] = depthBufferData.imageView; |
| 47 | |
| 48 | vk::FramebufferCreateInfo framebufferCreateInfo( |
| 49 | vk::FramebufferCreateFlags(), renderPass, attachments, surfaceData.extent.width, surfaceData.extent.height, 1 ); |
| 50 | std::vector<vk::Framebuffer> framebuffers; |
| 51 | framebuffers.reserve( swapChainData.imageViews.size() ); |
| 52 | for ( auto const & imageView : swapChainData.imageViews ) |
| 53 | { |
| 54 | attachments[0] = imageView; |
| 55 | framebuffers.push_back( device.createFramebuffer( framebufferCreateInfo ) ); |
| 56 | } |
| 57 | |
| 58 | for ( auto const & framebuffer : framebuffers ) |
| 59 | { |
| 60 | device.destroyFramebuffer( framebuffer ); |
| 61 | } |
| 62 | |
| 63 | /* VULKAN_KEY_END */ |
| 64 | |
| 65 | device.destroyRenderPass( renderPass ); |
| 66 | depthBufferData.clear( device ); |
| 67 | swapChainData.clear( device ); |
| 68 | device.destroy(); |
| 69 | instance.destroySurfaceKHR( surfaceData.surface ); |
| 70 | #if !defined( NDEBUG ) |
| 71 | instance.destroyDebugUtilsMessengerEXT( debugUtilsMessenger ); |
nothing calls this directly
no test coverage detected