Sample projects demonstrating the usage of Diligent Engine
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This module contains tutorials and sample applications intended to demonstrate the usage of Diligent Engine. The module depends on the Core and Tools submodules.

To build and run the applications in the module, please follow the instructions in the master repository.


Tutorial 01 - Hello Triangle

This tutorial shows how to render a simple triangle using Diligent Engine API.

Tutorial 02 - Cube

This tutorial demonstrates how to render an actual 3D object, a cube. It shows how to load shaders from files, create and use vertex, index and uniform buffers.

Tutorial 03 - Texturing

This tutorial demonstrates how to apply a texture to a 3D object. It shows how to load a texture from file, create shader resource binding object and how to sample a texture in the shader.

Tutorial 04 - Instancing

This tutorial demonstrates how to use instancing to render multiple copies of one object using unique transformation matrix for every copy.

Tutorial 05 - Texture Array

This tutorial demonstrates how to combine instancing with texture arrays to use unique texture for every instance.

Tutorial 06 - Multithreading

This tutorial shows how to generate command lists in parallel from multiple threads.

Tutorial 07 - Geometry Shader

This tutorial shows how to use geometry shader to render smooth wireframe.

Tutorial 08 - Tessellation

This tutorial shows how to use hardware tessellation to implement simple adaptive terrain rendering algorithm.

Tutorial 09 - Quads

This tutorial shows how to render multiple 2D quads, frequently swithcing textures and blend modes.

Tutorial 10 - Data Streaming

This tutorial shows dynamic buffer mapping strategy using MAP_FLAG_DISCARD and MAP_FLAG_DO_NOT_SYNCHRONIZE flags to efficiently stream varying amounts of data to GPU.

Tutorial 11 - Resource Updates

This tutorial demonstrates different ways to update buffers and textures in Diligent Engine and explains important internal details and performance implications related to each method.


AntTweakBar Sample

This sample demonstrates how to use AntTweakBar library to create simple user interface.

Atmospheric Light Scattering sample

The sample implements physically-based atmospheric light scattering model and demonstrates how Diligent Engine can be used to accomplish various rendering tasks: loading textures from files, using complex shaders, rendering to textures, using compute shaders and unordered access views, etc.

Build and Run Instructions

Please refer to Build and Run Instructions section of the master repository's readme.

Version History

Current progress

  • Added Tutorial 10 - Streaming


  • Implemented Vulkan backend
  • Added fullscreen mode selection dialog box
  • Implemented fullscreen mode toggle on UWP with shift + enter
  • Implemented fullscreen window toggle on Win32 with alt + enter
  • Added tutorial 09 - Quads


  • Enabled MacOS and iOS platforms
  • Fixed multiple issues with OpenGL/GLES


  • Removed legacy VS projects and solutions
  • Added tutorials:
    • 01 - Hello Triangle
    • 02 - Cube
    • 03 - Texturing
    • 04 - Instancing
    • 05 - Texture Array
    • 06 - Multithreading
    • 07 - Geometry Shader
    • 08 - Tessellation


  • Refactored build system to use CMake and Gradle for Android
  • Added support for Linux platform




Initial release


Licensed under the Apache License, Version 2.0

Copyright 2015-2018 Egor Yusov