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

Function main

RAII_Samples/DrawTexturedCube/DrawTexturedCube.cpp:19–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17static char const * EngineName = "Vulkan.hpp";
18
19int main()
20{
21 try
22 {
23 vk::raii::Context context;
24 vk::raii::Instance instance = vk::raii::su::makeInstance( context, AppName, EngineName, {}, vk::su::getInstanceExtensions() );
25#if !defined( NDEBUG )
26 vk::raii::DebugUtilsMessengerEXT debugUtilsMessenger( instance, vk::su::makeDebugUtilsMessengerCreateInfoEXT() );
27#endif
28 vk::raii::PhysicalDevice physicalDevice = vk::raii::PhysicalDevices( instance ).front();
29
30 vk::raii::su::SurfaceData surfaceData( instance, AppName, vk::Extent2D( 500, 500 ) );
31
32 std::pair<uint32_t, uint32_t> graphicsAndPresentQueueFamilyIndex =
33 vk::raii::su::findGraphicsAndPresentQueueFamilyIndex( physicalDevice, surfaceData.surface );
34 vk::raii::Device device = vk::raii::su::makeDevice( physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions() );
35
36 vk::raii::CommandPool commandPool = vk::raii::CommandPool( device, { {}, graphicsAndPresentQueueFamilyIndex.first } );
37 vk::raii::CommandBuffer commandBuffer = vk::raii::su::makeCommandBuffer( device, commandPool );
38
39 vk::raii::Queue graphicsQueue( device, graphicsAndPresentQueueFamilyIndex.first, 0 );
40 vk::raii::Queue presentQueue( device, graphicsAndPresentQueueFamilyIndex.second, 0 );
41
42 vk::raii::su::SwapChainData swapChainData( physicalDevice,
43 device,
44 surfaceData.surface,
45 surfaceData.extent,
46 vk::ImageUsageFlagBits::eColorAttachment | vk::ImageUsageFlagBits::eTransferSrc,
47 {},
48 graphicsAndPresentQueueFamilyIndex.first,
49 graphicsAndPresentQueueFamilyIndex.second );
50
51 vk::raii::su::DepthBufferData depthBufferData( physicalDevice, device, vk::Format::eD16Unorm, surfaceData.extent );
52
53 vk::raii::su::TextureData textureData( physicalDevice, device );
54
55 commandBuffer.begin( vk::CommandBufferBeginInfo() );
56 textureData.setImage( commandBuffer, vk::su::CheckerboardImageGenerator() );
57
58 vk::raii::su::BufferData uniformBufferData( physicalDevice, device, sizeof( glm::mat4x4 ), vk::BufferUsageFlagBits::eUniformBuffer );
59 glm::mat4x4 mvpcMatrix = vk::su::createModelViewProjectionClipMatrix( surfaceData.extent );
60 vk::raii::su::copyToDevice( uniformBufferData.deviceMemory, mvpcMatrix );
61
62 vk::raii::DescriptorSetLayout descriptorSetLayout =
63 vk::raii::su::makeDescriptorSetLayout( device,
64 { { vk::DescriptorType::eUniformBuffer, 1, vk::ShaderStageFlagBits::eVertex },
65 { vk::DescriptorType::eCombinedImageSampler, 1, vk::ShaderStageFlagBits::eFragment } } );
66 vk::raii::PipelineLayout pipelineLayout( device, { {}, *descriptorSetLayout } );
67
68 vk::Format colorFormat = vk::su::pickSurfaceFormat( physicalDevice.getSurfaceFormatsKHR( surfaceData.surface ) ).format;
69 vk::raii::RenderPass renderPass = vk::raii::su::makeRenderPass( device, colorFormat, depthBufferData.format );
70
71 glslang::InitializeProcess();
72 vk::raii::ShaderModule vertexShaderModule = vk::raii::su::makeShaderModule( device, vk::ShaderStageFlagBits::eVertex, vertexShaderText_PT_T );
73 vk::raii::ShaderModule fragmentShaderModule = vk::raii::su::makeShaderModule( device, vk::ShaderStageFlagBits::eFragment, fragmentShaderText_T_C );
74 glslang::FinalizeProcess();
75
76 std::vector<vk::raii::Framebuffer> framebuffers =

Callers

nothing calls this directly

Calls 15

makeInstanceFunction · 0.85
getInstanceExtensionsFunction · 0.85
makeDeviceFunction · 0.85
getDeviceExtensionsFunction · 0.85
makeCommandBufferFunction · 0.85
makeDescriptorSetLayoutFunction · 0.85
pickSurfaceFormatFunction · 0.85
makeRenderPassFunction · 0.85
makeShaderModuleFunction · 0.85

Tested by

no test coverage detected