渲染器流程
SimpleLogger Init
Set up window
Create event loop
Build window
Create VulkanContext
Create vulkan instance
Ash_window::enumerate_required_extensions
Create Vulkan Instance
DebugUtilMessenger
Create vulkan surface
Create vulkan physical device and queue families indices
Create vulkan device and graphics, present queues
Create command buffer pool
Allocate command buffer
Create swapchain
Create vulkan swapchain
Swapchain format
Swapchain present mode
Swapchain extent (width , height)
Swapchian image count
Create swapchain
Create swapchain image views
Create vulkan render pass
Attachment descriptions
Color attachment reference
Subpass descriptions
Subpass dependency
Create render pass
Create vulkan frame buffers
Semaphore for presentation
Image available semaphore
render finished semaphore
Create fence
Setup Imgui
Create Imgui
WinitPlatform init imgui
Imgui add fonts
Platform attach window
Allocate renderer
Main loop
platform handle event
new frame event
dirty swapchain
UI
generate ui
draw ui
create ui draw data
device wait for preframe fence
swap chain acquire next image
record ui draw data to command buffer
begin render pass with frame buffer, render area, clear value
insert draw data
end render pass
vulkan_context submit command_buffers
get present_result
LoopDestroyed
destroy any thing
最后更新于