CsPaint  1.0.0
CsPaint Abstraction

CsPaint uses the Vulkan API to render and draw graphics and text to the screen. There are multiple parts to this process, however it can be summarized into general areas. Each section involves multiple steps which will be expanded upon.

Initial setup: order dependent
Create an instance
Create a surface
Select a graphics device from the available hardware
Configuration: order independent
Load fragment shaders
Load vertex shaders
Load any other required shaders
Retrieve graphics queue
Retrieve transfer queue
Retrieve presentation queue
Retrieve swapchain
Retrieve command pool
Create command buffer
Descriptors
Create a descriptor layout binding
Create a descriptor layout
Create a descriptor pool
Allocate a descriptor set
Setup a pipeline
Create a pipeline shader stage
Create a pipeline layout (using the descriptor layout)
Create a render pass
Create fixed function pipeline
Drawing
Create vertex buffer
Create uniform buffer
Create image view which can be used as the depth buffer
Create a pipeline
Use the pipeline setup to create a graphics pipeline
Screen rendering: Call these every time the screen needs to be updated
begin command buffer
begin render pass
do drawing commands
end render pass
begin command buffer
submit command buffer