Introduction to Vulkan#

This guide is a step-by-step tutorial to help developers learn the basics and fundamentals of the Vulkan graphics API. It is not intended to be a comprehensive material designed to teach all of the details of Vulkan, but rather a starting point for developers with some background knowledge of graphics programming to be able to explore and learn the API for themselves by introducing the core principles of Vulkan.

Throughout this guide, you will see code snippets taken from the HelloAPI example available as part of the PowerVR SDK. It is highly recommended to go through this example while reading this tutorial in order to see how the code works, as the code presented in this document is not entirely representative of the whole application.

What is Vulkan?#

Vulkan is a modern graphics API developed by Khronos to better fit modern hardware and programming techniques. Vulkan aims to put more control in the hands of the developers by providing a better utilisation of multi-core devices, more explicit access to hardware, and a reduced driver overhead.

Vulkan can be described as a low-level API, as a lot of the work is left in the developer’s hands. It is significantly more verbose than the previous generations of graphics APIs, and as a result, there is more work for the developer to do so as to ensure correct behaviour. Therefore, Vulkan is not recommended for beginners or those who do not already have a reasonable understanding of graphics programming. In short, Vulkan provides more control and flexibility in exchange for more effort from the developer. Using Vulkan brings additional benefits such as better application structure, the ability to avoid a global state, and an easier and more explicit model.

Tutorial Overview#

This document aims to provide you with enough understanding of the basic concepts of Vulkan, as well as enough example code to see those concepts in practice, to be able to render a simple triangle on the screen. While this guide provides code snippets, it does not provide the whole code to be copied and pasted. For the full source code, see the HelloAPI example in the PowerVR SDK.

This guide will start off with a high-level overview of the API and its concepts, before detailing each of those concepts and how they relate back to the code. To help newer developers gain a familiarity with Vulkan, this guide will continue to refer back to the application as a whole, as well as reiterating core concepts and object definitions.