@@ -358,86 +358,6 @@ class HelloTriangleApplication {
358358 commandBuffer = std::move (vk::raii::CommandBuffers ( device, allocInfo ).front ());
359359 }
360360
361- void recordCommandBuffer (uint32_t imageIndex) {
362- commandBuffer.begin ( {} );
363- // Before starting rendering, transition the swapchain image to COLOR_ATTACHMENT_OPTIMAL
364- transition_image_layout (
365- imageIndex,
366- vk::ImageLayout::eUndefined,
367- vk::ImageLayout::eColorAttachmentOptimal,
368- {}, // srcAccessMask (no need to wait for previous operations)
369- vk::AccessFlagBits2::eColorAttachmentWrite, // dstAccessMask
370- vk::PipelineStageFlagBits2::eTopOfPipe, // srcStage
371- vk::PipelineStageFlagBits2::eColorAttachmentOutput // dstStage
372- );
373- vk::ClearValue clearColor = vk::ClearColorValue (0 .0f , 0 .0f , 0 .0f , 1 .0f );
374- vk::RenderingAttachmentInfo attachmentInfo = {
375- .imageView = swapChainImageViews[imageIndex],
376- .imageLayout = vk::ImageLayout::eColorAttachmentOptimal,
377- .loadOp = vk::AttachmentLoadOp::eClear,
378- .storeOp = vk::AttachmentStoreOp::eStore,
379- .clearValue = clearColor
380- };
381- vk::RenderingInfo renderingInfo = {
382- .renderArea = { .offset = { 0 , 0 }, .extent = swapChainExtent },
383- .layerCount = 1 ,
384- .colorAttachmentCount = 1 ,
385- .pColorAttachments = &attachmentInfo
386- };
387-
388- commandBuffer.beginRendering (renderingInfo);
389- commandBuffer.bindPipeline (vk::PipelineBindPoint::eGraphics, *graphicsPipeline);
390- commandBuffer.setViewport (0 , vk::Viewport (0 .0f , 0 .0f , static_cast <float >(swapChainExtent.width ), static_cast <float >(swapChainExtent.height ), 0 .0f , 1 .0f ));
391- commandBuffer.setScissor ( 0 , vk::Rect2D ( vk::Offset2D ( 0 , 0 ), swapChainExtent ) );
392- commandBuffer.draw (3 , 1 , 0 , 0 );
393- commandBuffer.endRendering ();
394- // After rendering, transition the swapchain image to PRESENT_SRC
395- transition_image_layout (
396- imageIndex,
397- vk::ImageLayout::eColorAttachmentOptimal,
398- vk::ImageLayout::ePresentSrcKHR,
399- vk::AccessFlagBits2::eColorAttachmentWrite, // srcAccessMask
400- {}, // dstAccessMask
401- vk::PipelineStageFlagBits2::eColorAttachmentOutput, // srcStage
402- vk::PipelineStageFlagBits2::eBottomOfPipe // dstStage
403- );
404- commandBuffer.end ();
405- }
406-
407- void transition_image_layout (
408- uint32_t currentFrame,
409- vk::ImageLayout old_layout,
410- vk::ImageLayout new_layout,
411- vk::AccessFlags2 src_access_mask,
412- vk::AccessFlags2 dst_access_mask,
413- vk::PipelineStageFlags2 src_stage_mask,
414- vk::PipelineStageFlags2 dst_stage_mask
415- ) {
416- vk::ImageMemoryBarrier2 barrier = {
417- .srcStageMask = src_stage_mask,
418- .srcAccessMask = src_access_mask,
419- .dstStageMask = dst_stage_mask,
420- .dstAccessMask = dst_access_mask,
421- .oldLayout = old_layout,
422- .newLayout = new_layout,
423- .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
424- .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
425- .image = swapChainImages[currentFrame],
426- .subresourceRange = {
427- .aspectMask = vk::ImageAspectFlagBits::eColor,
428- .baseMipLevel = 0 ,
429- .levelCount = 1 ,
430- .baseArrayLayer = 0 ,
431- .layerCount = 1
432- }
433- };
434- vk::DependencyInfo dependency_info = {
435- .dependencyFlags = {},
436- .imageMemoryBarrierCount = 1 ,
437- .pImageMemoryBarriers = &barrier
438- };
439- commandBuffer.pipelineBarrier2 (dependency_info);
440- }
441361 [[nodiscard]] vk::raii::ShaderModule createShaderModule (const std::vector<char >& code) const {
442362 vk::ShaderModuleCreateInfo createInfo{ .codeSize = code.size () * sizeof (char ), .pCode = reinterpret_cast <const uint32_t *>(code.data ()) };
443363 vk::raii::ShaderModule shaderModule{ device, createInfo };
0 commit comments