MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Hpp / main

Function main

samples/MultipleSets/MultipleSets.cpp:78–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76)";
77
78int main()
79{
80 try
81 {
82 vk::Instance instance = vk::su::createInstance( AppName, EngineName, {}, vk::su::getInstanceExtensions() );
83#if !defined( NDEBUG )
84 vk::DebugUtilsMessengerEXT debugUtilsMessenger = instance.createDebugUtilsMessengerEXT( vk::su::makeDebugUtilsMessengerCreateInfoEXT() );
85#endif
86
87 vk::PhysicalDevice physicalDevice = instance.enumeratePhysicalDevices().front();
88
89 vk::su::SurfaceData surfaceData( instance, AppName, vk::Extent2D( 500, 500 ) );
90
91 std::pair<uint32_t, uint32_t> graphicsAndPresentQueueFamilyIndex = vk::su::findGraphicsAndPresentQueueFamilyIndex( physicalDevice, surfaceData.surface );
92 vk::Device device = vk::su::createDevice( physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions() );
93
94 vk::CommandPool commandPool = device.createCommandPool( { {}, graphicsAndPresentQueueFamilyIndex.first } );
95 vk::CommandBuffer commandBuffer =
96 device.allocateCommandBuffers( vk::CommandBufferAllocateInfo( commandPool, vk::CommandBufferLevel::ePrimary, 1 ) ).front();
97
98 vk::Queue graphicsQueue = device.getQueue( graphicsAndPresentQueueFamilyIndex.first, 0 );
99 vk::Queue presentQueue = device.getQueue( graphicsAndPresentQueueFamilyIndex.second, 0 );
100
101 vk::su::SwapChainData swapChainData( physicalDevice,
102 device,
103 surfaceData.surface,
104 surfaceData.extent,
105 vk::ImageUsageFlagBits::eColorAttachment | vk::ImageUsageFlagBits::eTransferSrc,
106 {},
107 graphicsAndPresentQueueFamilyIndex.first,
108 graphicsAndPresentQueueFamilyIndex.second );
109
110 vk::su::DepthBufferData depthBufferData( physicalDevice, device, vk::Format::eD16Unorm, surfaceData.extent );
111
112 vk::su::TextureData textureData( physicalDevice, device );
113
114 commandBuffer.begin( vk::CommandBufferBeginInfo() );
115 textureData.setImage( device, commandBuffer, vk::su::MonochromeImageGenerator( { 118, 185, 0 } ) );
116
117 vk::su::BufferData uniformBufferData( physicalDevice, device, sizeof( glm::mat4x4 ), vk::BufferUsageFlagBits::eUniformBuffer );
118 glm::mat4x4 mvpcMatrix = vk::su::createModelViewProjectionClipMatrix( surfaceData.extent );
119 vk::su::copyToDevice( device, uniformBufferData.deviceMemory, mvpcMatrix );
120
121 vk::RenderPass renderPass = vk::su::createRenderPass(
122 device, vk::su::pickSurfaceFormat( physicalDevice.getSurfaceFormatsKHR( surfaceData.surface ) ).format, depthBufferData.format );
123
124 glslang::InitializeProcess();
125 vk::ShaderModule vertexShaderModule = vk::su::createShaderModule( device, vk::ShaderStageFlagBits::eVertex, vertexShaderText );
126 vk::ShaderModule fragmentShaderModule = vk::su::createShaderModule( device, vk::ShaderStageFlagBits::eFragment, fragmentShaderText );
127 glslang::FinalizeProcess();
128
129 std::vector<vk::Framebuffer> framebuffers =
130 vk::su::createFramebuffers( device, renderPass, swapChainData.imageViews, depthBufferData.imageView, surfaceData.extent );
131
132 vk::su::BufferData vertexBufferData( physicalDevice, device, sizeof( texturedCubeData ), vk::BufferUsageFlagBits::eVertexBuffer );
133 vk::su::copyToDevice( device, vertexBufferData.deviceMemory, texturedCubeData, sizeof( texturedCubeData ) / sizeof( texturedCubeData[0] ) );
134
135 /* VULKAN_KEY_START */

Callers

nothing calls this directly

Calls 15

createInstanceFunction · 0.85
getInstanceExtensionsFunction · 0.85
createDeviceFunction · 0.85
getDeviceExtensionsFunction · 0.85
createRenderPassFunction · 0.85
pickSurfaceFormatFunction · 0.85
createShaderModuleFunction · 0.85
createFramebuffersFunction · 0.85
createGraphicsPipelineFunction · 0.85

Tested by

no test coverage detected