Vulkan Samples 阅读 -- Debug Markers

Debug Markers

Introduction

  • 使用官方Samples中的教程
  • git: https://github.com/KhronosGroup/Vulkan-Samples.git
  • build 编译好后, 在VS->vulkan_samples->属性->调试->命令参数输入sample的名称运行即可
  • sample 的名称在samples.h中维护.
  • 找到 debug_utils

prepare

  • ApiVulkanSample::prepare(platform)
    • 初始化vulkan资源
  • camera
    • 相机参数初始化
  • debug_check_extension
    • 检测debug扩展
      • instance->get_extensions(): 获取扩展信息
        • for (auto &enabled_extension : enabled_instance_extensions)
          • 遍历扩展信息
          • strcmp(enabled_extension, VK_EXT_DEBUG_UTILS_EXTENSION_NAME) == 0
          • 是否有debug扩展
          • yes debug_utils_supported = true;
  • load_assets: 加载球模型和纹理贴图
  • prepare_uniform_buffers
    • update_uniform_buffers
  • prepare_offscreen_buffer
    • prepare G-Buffer
    • create_attachment: color
    • create_attachment: color
    • create_attachment: depth
    • vkCreateRenderPass
    • vkCreateFramebuffer
    • vkCreateSampler
  • setup_descriptor_set_layout
    • vkCreateDescriptorSetLayout
    • vkCreatePipelineLayout
  • prepare_pipelines
    • Full screen pipelines
      • vkCreateGraphicsPipelines
    • Bloom pass
      • vkCreateGraphicsPipelines
    • Second blur pass
      • vkCreateGraphicsPipelines
    • kysphere pipeline
      • vkCreateGraphicsPipelines
    • Flip cull mode
      • vkCreateGraphicsPipelines
  • setup_descriptor_pool
    • vkCreateDescriptorPool
  • setup_descriptor_sets
    • Sphere model object descriptor set
      • vkAllocateDescriptorSets
      • write_descriptor_set
      • vkUpdateDescriptorSets
    • Sky sphere descriptor set
      • vkAllocateDescriptorSets
      • write_descriptor_set
      • vkUpdateDescriptorSets
    • Bloom filter
      • vkAllocateDescriptorSets
      • write_descriptor_set
      • vkUpdateDescriptorSets
    • Composition descriptor set
      • vkAllocateDescriptorSets
      • write_descriptor_set
      • vkUpdateDescriptorSets
  • build_command_buffers: 本节重点, debug设置在这里
    • loop
      • vkBeginCommandBuffer
      • First pass: Render scene to offscreen framebuffer
        • cmd_begin_label: 重点
          • VkDebugUtilsLabelEXT
          • vkCmdBeginDebugUtilsLabelEXT
        • vkCmdBeginRenderPass
        • vkCmdSetViewport
        • vkCmdSetScissor
        • display_skysphere
          • cmd_insert_label: 重点
            • VkDebugUtilsLabelEXT
            • vkCmdInsertDebugUtilsLabelEXT
          • vkCmdBindPipeline
          • vkCmdPushConstants
          • vkCmdBindDescriptorSets
          • draw_model
            • vkCmdBindVertexBuffers
            • vkCmdBindIndexBuffer
            • vkCmdDrawIndexed
        • Spheres
          • vkCmdBindPipeline
          • vkCmdBindDescriptorSets
          • vkCmdPushConstants
          • cmd_insert_label: 重点
          • draw_model
          • vkCmdEndRenderPass
        • cmd_end_label: 重点
          • vkCmdEndDebugUtilsLabelEXT
    • debug_name_objects: 重点
      • set_object_name
        • VkDebugUtilsObjectNameInfoEXT
        • vkSetDebugUtilsObjectNameEXT

render

  • draw
    • queue_begin_label: 重点
      • VkDebugUtilsLabelEXT
      • vkQueueBeginDebugUtilsLabelEXT
    • ApiVulkanSample::prepare_frame
    • vkQueueSubmit
    • ApiVulkanSample::submit_frame
    • queue_end_label:重点
      • vkQueueEndDebugUtilsLabelEXT
  • update_uniform_buffers

shader

  • shader存放在Vulkan-Samples\shaders\debug_utils
  • 延迟渲染的基础管线, 可以忽略

小结

  本节主要讲 debug 扩展使用方法。 需要反复研究一下, 调试程序的基本方法, 必须掌握.

Vulkan Gears & Vulkan demo scene

   虽然使用的是最基本的渲染流程, 但还是有必要阅读一下#109

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值