AlphaEngine is a simulation engine written in C++ that uses OpenGL for rendering. It is designed to be modular and extensible.
- CMake 3.16 or higher
- A C++20 compatible compiler
- OpenGL 4.6 (Core profile)
SDL3 is fetched and built statically by CMake via FetchContent, so no system SDL package is required.
To build the project, follow these steps:
-
Clone the repository
-
Create a build directory:
mkdir build
-
Navigate to the build directory:
cd build -
Run CMake from the build directory to generate the cache:
cmake ..
-
Build the project:
cmake --build . -
Binary will be created in
Binariesfolder of the repository.
The Event Engine handles all input events, such as keyboard and mouse events. It provides a flexible system for managing and responding to user input.
The Rendering Engine is responsible for all graphical output. It uses OpenGL for rendering and supports various rendering techniques and optimizations. The engine is divided into several subcomponents:
- Mesh: Handles the creation and management of 3D models.
- Renderables: Manages objects that can be rendered, including 2D and 3D objects.
- Renderers: Contains different rendering strategies and techniques.
- Camera: Manages the camera view and projection.
- OpenGL: Contains OpenGL-specific code and utilities.
The Scene Graph manages the hierarchical organization of objects in the scene. It allows for efficient updates and rendering of complex scenes by organizing objects into a tree structure.
AlphaEngine uses a thin wrapper over SDL's logging API exposed via core/log.hpp. Four levels are currently available: LOG_INF, LOG_WRN, LOG_ERR, and LOG_FTL. See docs/logging.md for the conventions used across subsystems and guidance on picking a level when adding new log statements.
AlphaEngine is licensed under the MIT License. See the LICENSE file for more details.