Getting Started
Welcome to LearnVertexNova — a hands-on guide to building a modern, multi-backend renderer in C++.
Every chapter maps to working code, ends with something you can run, and steadily builds the engine foundations: frame loop → resources → shaders → passes → presentation.
By the end of this path, you'll not only run demos — you'll understand why they work and how to extend them.
What is VertexNova?
VertexNova Engine is a modern, multi-platform rendering and visualization engine designed for learning, clarity, and long-term maintainability. Unlike commercial game engines or high-level graphics libraries, VertexNova provides:
- Transparent architecture — See exactly how rendering works, from API calls to frame presentation
- Multi-backend support — Learn how to abstract across Vulkan, Metal, OpenGL, and WebGL with a unified API
- Clean C++ design — Modern C++17+ with strict ownership, predictable lifetimes, and clear abstractions
- Educational focus — Built to teach, not just to ship products
Core features
- Multi-backend mindset — Vulkan, Metal, OpenGL (and Web later)
- Learn by building — small demos that prove each concept
- Engineer-friendly workflow — CMake, debugging, and clean structure
What you need to know
Essential skills
- Modern C++ (C++17+) — We use contemporary C++ features, but we'll explain them as we go
- CMake workflows — Understanding how to build C++ projects is essential
- Basic graphics concepts — Familiarity with vertex buffers, shaders, and matrices helps, but we'll build the mental model together
Nice to have
- Experience with any graphics API (OpenGL, Vulkan, Metal, DirectX)
- Understanding of computer graphics fundamentals
- Previous engine or graphics programming experience
Don't worry if you're new to graphics programming — we'll explain concepts as we encounter them, and the codebase is designed to be readable and educational.
Development environment
VertexNova is developed and battle-tested across multiple platforms:
- Windows 11 / Windows 10 — Full support for Vulkan and OpenGL
- Ubuntu 22.04 (Linux) — Vulkan and OpenGL with excellent tooling
- macOS — Native Metal support plus OpenGL and Vulkan (via MoltenVK)
Recommended tooling
- Qt Creator / VS Code — Excellent for everyday development with great CMake integration
- Xcode — Essential for macOS debugging and GPU tools (Instruments, Metal debugger)
- CMake 3.15+ — Our build system of choice
Your first milestone
✅ Build the engine
✅ Run your first demo
✅ Confirm your toolchain
✅ Set up a repeatable workflow
This first milestone is crucial. Once you can build and run demos reliably, you have everything you need to start learning and experimenting.
Quick start
- All Platforms
- Windows
- macOS
- Linux
# Clone the repository
git clone https://github.com/ajeetsinghyadav/vertexnova.git
cd vertexnova
# Initialize submodules (required dependencies)
git submodule update --init --recursive
# Configure and build
mkdir build && cd build
cmake ..
cmake --build .
# Using Visual Studio
git clone https://github.com/ajeetsinghyadav/vertexnova.git
cd vertexnova
git submodule update --init --recursive
mkdir build && cd build
cmake .. -G "Visual Studio 17 2022" -A x64
cmake --build . --config Release
# Using Xcode
git clone https://github.com/ajeetsinghyadav/vertexnova.git
cd vertexnova
git submodule update --init --recursive
mkdir build && cd build
cmake .. -G Xcode
cmake --build . --config Release
# Using Unix Makefiles
git clone https://github.com/ajeetsinghyadav/vertexnova.git
cd vertexnova
git submodule update --init --recursive
mkdir build && cd build
cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
Expected time: 5-15 minutes depending on your machine and internet connection.
Run your first demo
# After building, navigate to build directory
cd build
# Run a sample (exact path depends on your build configuration)
./bin/sample_02_triangle
# or
./bin/sample_04_cube
What you should see: A window opens with a rendered triangle or cube. Congratulations — you just ran your first VertexNova demo!
See the Demos page for a complete list of available samples and what each demonstrates.
Architecture overview

VertexNova is organized into clean, focused components:
- xwin — Platform and window/input utilities abstracting OS-specific functionality
- xgl — Multi-backend rendering layer providing a unified API across OpenGL, Metal, Vulkan, and WebGL
- xviz — Visualization helpers and utilities for common graphics tasks
This architecture is intentionally simple. Each component has a clear responsibility, making the codebase easy to understand, modify, and extend.
What you'll build
As you progress through LearnVertexNova, you'll build:
Basic rendering pipeline
Textures & materials
MSAA & offscreen rendering
What's next
Now that you're set up, here's your learning path:
Immediate next steps
👉 Development Environment Setup
Get detailed platform-specific setup instructions, install dependencies, and configure your development environment for maximum productivity.
Learning path
👉 Learn VertexNova
Follow our structured learning path. Start with window creation, progress through rendering basics, and advance to complex topics like instancing and render targets. Each lesson builds on the previous one.
👉 View Demos
Explore our demo suite. Each demo is a working example that validates specific engine features. Study the code, run the demos, and understand how they work.
Deep dive
👉 Project Overview
Understand the engineering decisions behind VertexNova. Learn about cross-backend challenges, debugging strategies, and performance considerations.
👉 Roadmap
See what's currently working, what's in progress, and what's planned. This honest status helps you understand the project's current state.
Resources
- GitHub Repository — Source code, issues, and discussions
- Development Setup — Comprehensive environment setup guide
- Project Overview — Engineering highlights and architectural insights
- Roadmap — Current status, feature matrix, and future plans
Design philosophy
VertexNova follows a clear set of principles that guide every design decision:
- Modern C++ with clarity over cleverness — Readable code is more valuable than clever code
- Thin abstractions and clear layering — Enough abstraction to be practical, not so much that it's magic
- Multi-backend design via unified API — Learn once, run everywhere
- Build to learn first; scale responsibly later — Education and understanding come before optimization
Ready to begin?
You're about to embark on a journey that will transform how you think about graphics programming. Every line of code you write, every demo you run, and every concept you master brings you closer to understanding what makes great graphics engines tick.
Let's build something amazing together.
Start with the Development Environment Setup, then dive into the Learning Path. Welcome to LearnVertexNova.