MCPcopy Create free account
hub / github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator / DrawFrame

Function DrawFrame

src/VulkanSample.cpp:2443–2571  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2441}
2442
2443static void DrawFrame()
2444{
2445 // Begin main command buffer
2446 size_t cmdBufIndex = (g_NextCommandBufferIndex++) % COMMAND_BUFFER_COUNT;
2447 VkCommandBuffer hCommandBuffer = g_MainCommandBuffers[cmdBufIndex];
2448 VkFence hCommandBufferExecutedFence = g_MainCommandBufferExecutedFences[cmdBufIndex];
2449
2450 ERR_GUARD_VULKAN( vkWaitForFences(g_hDevice, 1, &hCommandBufferExecutedFence, VK_TRUE, UINT64_MAX) );
2451 ERR_GUARD_VULKAN( vkResetFences(g_hDevice, 1, &hCommandBufferExecutedFence) );
2452
2453 VkCommandBufferBeginInfo commandBufferBeginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO };
2454 commandBufferBeginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
2455 ERR_GUARD_VULKAN( vkBeginCommandBuffer(hCommandBuffer, &commandBufferBeginInfo) );
2456 SetDebugUtilsObjectName(VK_OBJECT_TYPE_COMMAND_BUFFER, reinterpret_cast<std::uint64_t>(hCommandBuffer), "hCommandBuffer");
2457
2458 const VkSemaphore imageAvailableSemaphore = g_hImageAvailableSemaphores[cmdBufIndex];
2459
2460 // Acquire swapchain image
2461 uint32_t imageIndex = 0;
2462 VkResult res = vkAcquireNextImageKHR(g_hDevice, g_hSwapchain, UINT64_MAX, imageAvailableSemaphore, VK_NULL_HANDLE, &imageIndex);
2463 if(res == VK_ERROR_OUT_OF_DATE_KHR)
2464 {
2465 RecreateSwapChain();
2466 return;
2467 }
2468 else if(res < 0)
2469 {
2470 ERR_GUARD_VULKAN(res);
2471 }
2472
2473 // Record geometry pass
2474
2475 VkClearValue clearValues[2];
2476 ZeroMemory(clearValues, sizeof(clearValues));
2477 clearValues[0].color.float32[0] = 0.25f;
2478 clearValues[0].color.float32[1] = 0.25f;
2479 clearValues[0].color.float32[2] = 0.5f;
2480 clearValues[0].color.float32[3] = 1.0f;
2481 clearValues[1].depthStencil.depth = 1.0f;
2482
2483 VkRenderPassBeginInfo renderPassBeginInfo = { VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO };
2484 renderPassBeginInfo.renderPass = g_hRenderPass;
2485 renderPassBeginInfo.framebuffer = g_Framebuffers[imageIndex];
2486 renderPassBeginInfo.renderArea.offset.x = 0;
2487 renderPassBeginInfo.renderArea.offset.y = 0;
2488 renderPassBeginInfo.renderArea.extent = g_Extent;
2489 renderPassBeginInfo.clearValueCount = (uint32_t)_countof(clearValues);
2490 renderPassBeginInfo.pClearValues = clearValues;
2491 vkCmdBeginRenderPass(hCommandBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE);
2492
2493 vkCmdBindPipeline(
2494 hCommandBuffer,
2495 VK_PIPELINE_BIND_POINT_GRAPHICS,
2496 g_hPipeline);
2497
2498 mat4 view = mat4::LookAt(
2499 vec3(0.f, 0.f, 0.f),
2500 vec3(0.f, -2.f, 4.f),

Callers 1

MainWindowFunction · 0.85

Calls 3

SetDebugUtilsObjectNameFunction · 0.85
RecreateSwapChainFunction · 0.85
vec3Class · 0.85

Tested by

no test coverage detected