From 613f99e937e55f73dcec1251fdce4a9fda077a0f Mon Sep 17 00:00:00 2001 From: hachem Date: Thu, 14 Aug 2025 01:24:24 +0200 Subject: [add]: implement an ImGUI layer --- README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 6c08d39..6f3e2e8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,78 @@ -# 𝔇𝔬𝔫𝔲𝔱 -A realtime blackhole simulator and renderer written in C. \ No newline at end of file +# Donut Engine + +A modern C++ game engine with OpenGL rendering and ImGUI integration. + +## Features + +- **OpenGL Rendering**: Modern OpenGL 4.6 with GLAD loader +- **GLFW Window Management**: Cross-platform window and input handling +- **ImGUI Integration**: Immediate mode GUI for debugging and configuration +- **State Management**: Flexible state system for different application modes +- **Event System**: Comprehensive event handling for input and window events + +## States + +The engine uses a state-based architecture with the following states: + +### Menu State +- Main menu interface +- Navigation to other states +- Application exit functionality + +### Config State +- Simulation configuration +- Parameter adjustment (simulation speed, particle count, gravity) +- Settings reset functionality + +### Simulation State +- Real-time simulation controls +- Performance monitoring (FPS, frame time) +- Debug information display +- Time scale adjustment + +## Controls + +- **Key 1**: Switch to Config State +- **Key 2**: Switch to Simulation State +- **Key 3**: Switch to Main Menu +- **Mouse**: Navigate ImGUI interfaces +- **ImGUI Buttons**: State switching and configuration + +## Building + +The project uses Premake5 for build configuration: + +```bash +# Generate Visual Studio 2022 project +premake5 vs2022 + +# Generate other build systems as needed +premake5 gmake2 +premake5 xcode4 +``` + +## Dependencies + +- **GLFW**: Window management and input handling +- **GLAD**: OpenGL function loading +- **ImGUI**: Immediate mode GUI +- **GLM**: Mathematics library +- **Premake5**: Build system generation + +## Architecture + +The engine follows a modular architecture: + +- **Core**: Application, Window, Event, State management +- **Platform**: Renderer API abstraction (OpenGL, Vulkan) +- **Rendering**: High-level rendering interface +- **States**: Application state implementations + +## ImGUI Integration + +ImGUI is fully integrated into the engine with: + +- Automatic initialization after OpenGL context setup +- Per-state UI rendering through `OnImUIRender()` virtual function +- Proper frame management and cleanup +- Support for docking and viewports \ No newline at end of file -- cgit v1.3