Evan is a library for 3D rendering and input handling for applications on OpenXR devices and traditional platforms. It is built on top of OpenXR and Vulkan, providing a high-level interface for developers to create immersive experiences.
- 3D Primitives: Built-in support for rendering common 3D shapes like cubes, spheres, and text.
- Event Handling: Comprehensive event system for handling user input and interactions.
int main() {
return 0;
}- How Evan Works - Comprehensive guide to concepts, lifecycle, and usage patterns
- Architecture Documentation - Detailed overview of the system's design and components
- Technical Choices Documentation - Insights into design decisions and technologies
Evan builds as a static library along with examples and tests:
mkdir build && cd build
cmake ..
makeAfter building, you can run the examples:
# Hello World (minimal)
./examples/hello_world/hello_world
# Button Counter (interactive)
./examples/button_counter/button_counter
# Basic Demo (comprehensive)
./examples/basic_demo/basic_demoTo run the test suite:
./tests/test_evanEvan builds as a static library (libevan.a) with minimal dependencies. To use it in your CMake project:
# Link with Evan (core library has no external dependencies)
target_link_libraries(your_target PRIVATE evan)
# Add SDL3 and OpenGL only if you need them for your custom renderer
# target_link_libraries(your_target PRIVATE SDL3::SDL3 ${OPENGL_LIBRARIES})The examples/ directory contains sample applications demonstrating Evan's features. Each example is organized in its own subdirectory:
- hello_world/: Minimal example showing basic Evan usage
- button_counter/: Interactive example demonstrating event handling and state management
- basic_demo/: Comprehensive example showing component hierarchy, event handling, and 3D primitive rendering