product
DirectX Model Renderer
Developed a real-time model renderer using DirectX 12 and C++, supporting transformations, lighting, texture mapping, and Keyboard and Mouse gestures.
Overview
This project demonstrates a complete DirectX 12 graphics pipeline through a simple 3D cube renderer. The implementation covers GPU initialization, resource setup, shader compilation, command recording, synchronization, and presentation. The demo includes an orbit camera, vertex-colored cube, a custom logging system, and an FPS counter shown in the window title.
https://github.com/user-attachments/assets/951ff221-0057-4971-8852-07725134a768
Features
- Full DirectX 12 graphics pipeline setup (device, command queue, swap chain, descriptor heaps)
- Vertex and pixel shaders written in HLSL
- Vertex color interpolation for smooth gradients on the cube
- Orbit camera with basic mouse/keyboard controls
- Custom logger for categorized runtime messages (info, warn, error)
- Real-time FPS counter displayed in the window title
- Proper resource state transitions and GPU synchronization
- Simple, single-file demo structure suitable for learning and extension
Concepts Demonstrated
- Direct3D 12 device and command queue creation
- Swap chain and render target view setup
- Descriptor heap management (RTV/CBV/SRV as applicable)
- Creating and binding vertex and index buffers
- Constant buffer usage and updating (view/projection/model matrices)
- Compiling and binding HLSL shaders (vertex/pixel)
- Command list recording and executing
- Resource barriers and fence-based GPU synchronization
- Basic camera math (view and projection matrices)
- Basic performance tracking (frame timing and FPS)
Requirements
- Language: C++17 or later
- Graphics API: DirectX 12
- IDE: Visual Studio Code (Visual Studio 2019/2022 works too)
- SDKs/Libraries:
- (Check Cmake File For all libraries)
Technologies
DirectX 12C++Graphics Programming