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

Evan is the rendering and runtime layer used by XIDER. It provides the Vulkan graphics pipeline, platform backends for OpenXR and GLFW, and the frame/update loop that drives the application.

What It Provides

  • Vulkan-based rendering and swapchain management.
  • Desktop and XR platform abstractions.
  • Mesh, shader, and material helpers.
  • Optional backend integration for OpenXR or GLFW.

Key Concepts

  • Engine — owns the frame loop and coordinates update, draw, and present.
  • Platform — abstracts the target backend (OpenXR or GLFW) and platform (Android, Linux, Windows, macOS).
  • Device & swapchain — manage Vulkan resources and frame ownership.
  • Render objects — GPU meshes registered through the engine and drawn each frame.
  • Mesh / shader / material — describe renderable content.

Quickstart

Evan is a library; it is consumed by an application (such as XIDER) that provides a platform implementation. A minimal setup selects one backend and one platform:

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

Building

Dependencies

  • CMake 3.10+
  • A C++20 compiler
  • The Vulkan SDK (download from LunarG)
  • Doxygen + Graphviz (only for -DBUILD_DOCS=ON)

Evan fetches its dependencies (Utility, GLM, STB) via CMake FetchContent.

Configure and build

Select exactly one backend and one platform:

cmake -S . -B build \
-DBUILD_FOR_GLFW=ON \
-DBUILD_FOR_LINUX=ON \
-DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build --output-on-failure

Optional options:

  • -DBUILD_TESTING=ON — build and run the test suite.
  • -DBUILD_DOCS=ON — build Doxygen documentation.
  • -DBUILD_BENCHMARKS=ON — build the benchmark harness.

Consuming as a dependency

Once installed, downstream projects can use find_package(evan):

cmake --install build --prefix /path/to/prefix
find_package(evan REQUIRED)
target_link_libraries(my_app PRIVATE evan::evan)

Documentation

Contributing

We welcome contributions from the community! If you're interested in contributing to Evan, please check out our Contributing Guidelines for more information on how to get involved.

License

Evan is released under the [MIT License](LICENSE). See CODE_OF_CONDUCT.md for our community standards and SECURITY.md for reporting vulnerabilities.