UgRenderer
High-level swapchain renderer managing per-frame synchronization
It
Renderer state: swapchain, framebuffers, and render pass
struct It {
UgSwapchain.It swapchain;
UgFrameBuffer.It framebuffers;
VkRenderPass renderPass;
};create
Create a renderer for the given context
UgRenderer.It create(UgContext.It& ctx);Parameters
ctx— Vulkan context
Returns — Initialized renderer object
destroy
Destroy the renderer and free all swapchain resources
U0 destroy(UgContext.It& ctx, UgRenderer.It& renderer);Parameters
ctx— Vulkan contextrenderer— Renderer to destroy
update
Recreate the swapchain and framebuffers after a resize
U0 update(UgContext.It& ctx, UgRenderer.It& renderer);Parameters
ctx— Vulkan contextrenderer— Renderer to update
begin
Begin the render pass for the current frame
U0 begin(UgRenderer.It& renderer, UgCommandBuffer.It& cmd);Parameters
renderer— Active renderercmd— Command buffer to record into
end
End the render pass
U0 end(UgCommandBuffer.It& cmd);Parameters
cmd— Command buffer to record into
setViewport
Set the viewport and scissor to the current swapchain extent
U0 setViewport(UgContext.It& ctx, UgRenderer.It& renderer, UgCommandBuffer.It& cmd);Parameters
ctx— Vulkan contextrenderer— Active renderercmd— Command buffer to record into
submit
Submit the recorded command buffer to the graphics queue
U0 submit(UgContext.It& ctx, UgRenderer.It& renderer, UgCommandBuffer.It& cmd, UgFence.It& fence);Parameters
ctx— Vulkan contextrenderer— Active renderercmd— Command buffer to submitfence— Fence to signal when the submission completes
present
Present the current swapchain image
VkResult present(UgContext.It& ctx, UgRenderer.It& renderer);Parameters
ctx— Vulkan contextrenderer— Active renderer
Returns — VkResult — VK_SUCCESS or an out-of-date/suboptimal code
aquire
Acquire the next swapchain image for rendering
VkResult aquire(UgContext.It& ctx, UgRenderer.It& renderer);Parameters
ctx— Vulkan contextrenderer— Active renderer
Returns — VkResult — VK_SUCCESS or an out-of-date code