Vulkan Programming
Essential Elements of a Vulkan Application
- Instance and physical device selection
- VkInstance
- VkPhysicalDevice
- Logical device and queue families
- VkDevice
- VkPhysicalDeviceFeatures
- VkQueue
- Window surface and swap chain (Optional for headless/offscreen rendering)
- VkSurfaceKHR
- VkSwapChainKHR
- Image views and framebuffers
- VkImageView
- VkFramebuffer
- Render passes
- Graphics pipeline
- VkPipeline
- VkShaderModule
- Command pools and command buffers
- VkCommandBuffer
- VkCommandPool
- Main Loop
- vkAcquireNextImageKHR
- vkQueueSubmit (vkQueuePresentKHR)
- Synchronization
Here is a diagram of how some of these elements are connected together:
+------------------+ +------------------+ +------------------+
| Instance |--->| Surface |--->| Swap Chain |
+------------------+ +------------------+ +------------------+
|
V
+------------------+ +------------------+
| Physical Device |--->| Adapter |
+------------------+ +------------------+
|
V
+------------------+
| Device |
+------------------+