#0 – Vulkan – Before the Storm

Introduction

Welcome, nice to see you here. Here I intended to talk about Vulkan and how to get started, there is no time to waste, let us dive straight down.

Let us take a look at Vulkan in an overall view before the storm comes. Since if you are a beginner, it can be a handful. For those with OpenGL knowledge will have a bit of challenge. Similar goes for DirectX. But once the first hurdle is passed, it will become more clear. (がんばってね) – Fortunately, many online resources, examples, and documents are available online for further study and understanding.


So what is Vulkan? Vulkan is a modern approach to a low-level rendering API. It is responsible for communicating with graphic devices and performs rendering operations such as draw geometry, copies memory, computes general-purpose code, and much more.

Having that said, why should we even bother with Vulkan when DirectX and OpenGL already exist? When it comes to OpenGL, it uses an old design (state machine) that prevents us to take advantage of all the resources. Furthermore, the OpenGL driver needs to do quite a bit of prediction how the programmer does its rendering command, etc will be used. In regard to DirectX(12), the main reason is that Vulkan is cross-platform and is not bound to a single ecosystem.


Difference Between Vulkan and OpenGL

Let us briefly compare what is the difference between for instance OpenGL and Vulkan. Well, they are both low-level rendering APIs. However, of the major differences, aside from a different architecture design. OpenGL handles a lot of the internal such as rendering command, pipeline rendering pipeline, and compiling all the various of a shader. Developers do not have to pay too much attention to some aspects. It is handled by the driver. However, Vulkan exposes much more of what was originally done behind the scene. This adds some more code for the programmer as well as a different way to architecture its program. However, in exchange, we gain greater control of our rendering pipeline. This can lead to improving performance, such as support for proper multithreading support for instance. This has always been a limitation to what OpenGL can do.

Overall Structure (WIP)

  • Create a Instance
  • Enumerate Device and select
  • Create Queue
  • Create Swapchain
  • Create Command Buffer
  • Synchronization – in Details

Resources

  • Specification – Contains all the information about the API and its extension. It is quite lengthy but contains a huge amount of information.