A comprehensive collection of open source C examples for Vulkan(tm), the new graphics and compute API from Khronos.
This repository contains submodules for some of the external dependencies, so when doing a fresh clone you need to clone recursively: The repository contains everything required to compile and build the examples on Windows, Linux and Android using a C compiler that supports C 11. Use the provided CMake with CMake to generate a build configuration for your favorite IDE or compiler, e.g.: Use the provided CMake with CMake to generate a build configuration for your favorite IDE or compiler.
Note that you need assimp in order to compile the examples for Linux. Renders a colored triangle using an indexed vertex buffer.
Either compile and install from the repository, or install libassimp-dev. Vertex and index data are uploaded to device local memory using so-called "staging buffers".
Uses a single pipeline with basic shaders loaded from SPIR-V and and single uniform block for passing matrices that is updated on changing the view.
This example is far more explicit than the other examples and is meant to be a starting point for learning Vulkan from the ground up.
Much of the code is boilerplate that you'd usually encapsulate in helper functions and classes (which is what the other examples do).
Pipeline state objects replace the biggest part of the dynamic state machine from Open GL, baking state information for culling, blending, rasterization, etc.
and shaders into a fixed state that can be optimized much easier by the implementation.
This example uses three different PSOs for rendering the same scene with different visuals and shaders and also demonstrates the use of pipeline derivatives.
Shows how to upload a 2D texture into video memory for sampling in a shader.
Loads a compressed texture into a host visible staging buffer and copies all mip levels to a device local optimal tiled image for best performance.