evan 2026.1.4
Evan
Loading...
Searching...
No Matches
Getting Started

This tutorial walks you from an empty project to a working Evan setup. It assumes you have already built the library.

1. Select a backend and platform

Evan requires exactly one backend (BUILD_FOR_OPENXR or BUILD_FOR_GLFW) and one platform (BUILD_FOR_ANDROID, BUILD_FOR_LINUX, BUILD_FOR_WINDOWS, or BUILD_FOR_MACOS).

cmake -S . -B build -DBUILD_FOR_GLFW=ON -DBUILD_FOR_LINUX=ON
cmake --build build

2. Create a platform implementation

Evan delegates platform-specific behavior to a Platform implementation. For a desktop GLFW build, use the provided desktop platform; for XR, use the OpenXR platform.

3. Create an engine

The evan::Engine receives the platform and prepares Vulkan resources. It also accepts optional evan::RenderSettings: multisampling is disabled by default, and the sample count is baked into the swapchain render pass, so it can only be chosen at construction time.

#include <evan/Engine.hpp>
// Construct the engine with a platform implementation.
// Opt back into multisampling when the extra edge quality is worth the
// bandwidth; the default renders at a single sample and resolves nothing.
settings.msaaSamples = VK_SAMPLE_COUNT_4_BIT;
evan::Engine engine(ressourceProvider, platform, settings);
The Engine class is the main entry point for the Evan Engine. It manages the core components of the e...
Definition Engine.hpp:86
Application-facing rendering configuration.
VkSampleCountFlagBits msaaSamples
Multisample anti-aliasing sample count.

4. Add renderable content

Add renderable objects (meshes, primitives, models, or text) through the Engine:

#include <evan/Engine.hpp>

Each add*() call registers a render object in the engine and returns its object ID, which can later be passed to removeObject().

5. Run the frame loop

The engine drives the frame loop: it polls events, updates state, records commands, and presents the image.

Next steps