badd10de.dev

Vulkan Programming


Essential Elements of a Vulkan Application

  1. Instance and physical device selection
    • VkInstance
    • VkPhysicalDevice
  2. Logical device and queue families
    • VkDevice
    • VkPhysicalDeviceFeatures
    • VkQueue
  3. Window surface and swap chain (Optional for headless/offscreen rendering)
    • VkSurfaceKHR
    • VkSwapChainKHR
  4. Image views and framebuffers
    • VkImageView
    • VkFramebuffer
  5. Render passes
  6. Graphics pipeline
    • VkPipeline
    • VkShaderModule
  7. Command pools and command buffers
    • VkCommandBuffer
    • VkCommandPool
  8. 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           |
+------------------+

Resources