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

Function main

RAII_Samples/ImmutableSampler/ImmutableSampler.cpp:31–189  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29static char const * EngineName = "Vulkan.hpp";
30
31int main()
32{
33 try
34 {
35 vk::raii::Context context;
36 vk::raii::Instance instance = vk::raii::su::makeInstance( context, AppName, EngineName, {}, vk::su::getInstanceExtensions() );
37#if !defined( NDEBUG )
38 vk::raii::DebugUtilsMessengerEXT debugUtilsMessenger( instance, vk::su::makeDebugUtilsMessengerCreateInfoEXT() );
39#endif
40 vk::raii::PhysicalDevice physicalDevice = vk::raii::PhysicalDevices( instance ).front();
41
42 vk::raii::su::SurfaceData surfaceData( instance, AppName, vk::Extent2D( 500, 500 ) );
43
44 std::pair<uint32_t, uint32_t> graphicsAndPresentQueueFamilyIndex =
45 vk::raii::su::findGraphicsAndPresentQueueFamilyIndex( physicalDevice, surfaceData.surface );
46 vk::raii::Device device = vk::raii::su::makeDevice( physicalDevice, graphicsAndPresentQueueFamilyIndex.first, vk::su::getDeviceExtensions() );
47
48 vk::raii::CommandPool commandPool = vk::raii::CommandPool( device, { {}, graphicsAndPresentQueueFamilyIndex.first } );
49 vk::raii::CommandBuffer commandBuffer = vk::raii::su::makeCommandBuffer( device, commandPool );
50
51 vk::raii::Queue graphicsQueue( device, graphicsAndPresentQueueFamilyIndex.first, 0 );
52 vk::raii::Queue presentQueue( device, graphicsAndPresentQueueFamilyIndex.second, 0 );
53
54 vk::raii::su::SwapChainData swapChainData( physicalDevice,
55 device,
56 surfaceData.surface,
57 surfaceData.extent,
58 vk::ImageUsageFlagBits::eColorAttachment | vk::ImageUsageFlagBits::eTransferSrc,
59 {},
60 graphicsAndPresentQueueFamilyIndex.first,
61 graphicsAndPresentQueueFamilyIndex.second );
62
63 vk::raii::su::DepthBufferData depthBufferData( physicalDevice, device, vk::Format::eD16Unorm, surfaceData.extent );
64
65 vk::raii::su::BufferData uniformBufferData( physicalDevice, device, sizeof( glm::mat4x4 ), vk::BufferUsageFlagBits::eUniformBuffer );
66 glm::mat4x4 mvpcMatrix = vk::su::createModelViewProjectionClipMatrix( surfaceData.extent );
67 vk::raii::su::copyToDevice( uniformBufferData.deviceMemory, mvpcMatrix );
68
69 vk::Format colorFormat = vk::su::pickSurfaceFormat( physicalDevice.getSurfaceFormatsKHR( surfaceData.surface ) ).format;
70 vk::raii::RenderPass renderPass = vk::raii::su::makeRenderPass( device, colorFormat, depthBufferData.format );
71
72 glslang::InitializeProcess();
73 vk::raii::ShaderModule vertexShaderModule = vk::raii::su::makeShaderModule( device, vk::ShaderStageFlagBits::eVertex, vertexShaderText_PT_T );
74 vk::raii::ShaderModule fragmentShaderModule = vk::raii::su::makeShaderModule( device, vk::ShaderStageFlagBits::eFragment, fragmentShaderText_T_C );
75 glslang::FinalizeProcess();
76
77 std::vector<vk::raii::Framebuffer> framebuffers =
78 vk::raii::su::makeFramebuffers( device, renderPass, swapChainData.imageViews, &depthBufferData.imageView, surfaceData.extent );
79
80 vk::raii::su::BufferData vertexBufferData( physicalDevice, device, sizeof( texturedCubeData ), vk::BufferUsageFlagBits::eVertexBuffer );
81 vk::raii::su::copyToDevice( vertexBufferData.deviceMemory, texturedCubeData, sizeof( texturedCubeData ) / sizeof( texturedCubeData[0] ) );
82
83 /* VULKAN_KEY_START */
84
85 vk::raii::su::TextureData textureData( physicalDevice, device );
86
87 commandBuffer.begin( vk::CommandBufferBeginInfo() );
88 textureData.setImage( commandBuffer, vk::su::CheckerboardImageGenerator() );

Callers

nothing calls this directly

Calls 15

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

Tested by

no test coverage detected