evan 1.0.0
Evan is a component-based UI framework library built around a primitive rendering system. It's designed for building user interfaces across OpenXR platforms and traditional platforms with custom rendering backends and input handling. The framework is lightweight, flexible, and easy to integrate into existing projects.
Loading...
Searching...
No Matches
Evan

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.

Key Features

  • 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.

Quick Start

int main() {
return 0;
}

Documentation

Building

Evan builds as a static library along with examples and tests:

mkdir build && cd build
cmake ..
make

Running Examples

After 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_demo

Running Tests

To run the test suite:

./tests/test_evan

Using Evan in Your Project

Evan 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})

Examples

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