Skip to content
βœ–πŸŒ± A DirectX 12 starter repo that you could use to get the ball rolling.
C++ CMake HLSL
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Cover Art

DirectX 12 Seed

cmake-img License

A DirectX 12 repo you can use to get started with your own renderer.


First install:

Then type the following in your terminal.

# πŸ‘ Clone the repo
git clone --recurse-submodules

# πŸ’Ώ go inside the folder
cd directx12-seed

# πŸ‘― If you forget to `recurse-submodules` you can always run:
git submodule update --init

# πŸ‘· Make a build folder
mkdir build
cd build

# πŸ–ΌοΈ To build your Visual Studio solution on Windows x64
cmake .. -A x64

# πŸ”¨ Build project
cmake --build .

Refer to this blog post on designing C++ libraries and apps for more details on CMake, Git Submodules, etc.

Project Layout

As your project becomes more complex, you'll want to separate files and organize your application to something more akin to a game or renderer, check out this post on game engine architecture and this one on real time renderer architecture for more details.

β”œβ”€ πŸ“‚ external/                    # πŸ‘Ά Dependencies
β”‚  β”œβ”€ πŸ“ crosswindow/                    # πŸ–ΌοΈ OS Windows
β”‚  β”œβ”€ πŸ“ crosswindow-graphics/           # 🎨 DirectX 12 Swapchain Creation
β”‚  └─ πŸ“ glm/                            # βž• Linear Algebra
β”œβ”€ πŸ“‚ src/                         # 🌟 Source Files
β”‚  β”œβ”€ πŸ“„ Utils.h                         # βš™οΈ Utilities (Load Files, Check Shaders, etc.)
β”‚  β”œβ”€ πŸ“„ Renderer.h                      # πŸ”Ί Triangle Draw Code
β”‚  β”œβ”€ πŸ“„ Renderer.cpp                    # -
β”‚  └─ πŸ“„ Main.cpp                        # 🏁 Application Main
β”œβ”€ πŸ“„ .gitignore                   # πŸ‘οΈ Ignore certain files in git repo
β”œβ”€ πŸ“„ CMakeLists.txt               # πŸ”¨ Build Script
β”œβ”€ πŸ“„                   # βš–οΈ Your License (Unlicense)
└─ πŸ“ƒ                     # πŸ“– Read Me!
You can’t perform that action at this time.