A lightweight, modular C++ desktop application for rendering custom graphical user interfaces and visual overlays on Windows.
This repository is actively maintained. The project features a stable C++20 core architecture with modular rendering, configuration management, and interactive visual components.
External Overlay is a desktop application framework that displays custom graphical interfaces, control panels, and visual widgets over desktop windows. The project isolates user interface rendering from underlying data processing, ensuring high responsiveness and low system resource overhead.
Building reliable desktop overlays often suffers from tight coupling, complex platform dependencies, or intrusive process injection. External Overlay addresses these challenges by offering:
- Non-Intrusive Design: Operates entirely as a standalone user-mode window layer without modifying external application binaries.
- Data Schema Decoupling: Separates dynamic data mappings into external JSON schema files so structural updates do not require recompiling code.
- Modular C++ Architecture: Organizes component domains into isolated public headers (
include/) and implementations (src/) for long-term maintainability.
- Modern C++ Core: Built with standard C++20 features, clear design patterns, and strong component encapsulation.
- Hardware-Accelerated Overlay: Direct3D 11 graphics context providing smooth, transparent window presentation.
- Graphical Control Panel: Tabbed user interface built with Dear ImGui for customizing settings, colors, and controls.
- Profile Persistence: Save and load application configurations using external JSON profiles (
configs/default.json). - Spatial Minimap Widget: Integrated 2D map display component for spatial layout visualization (
render/map_manager). - Automated CMake Setup: CMake build configuration supporting one-click release compilation (
build.bat).
- Operating System: Windows 10 or Windows 11 (64-bit)
- Graphics API: Direct3D 11 compatible graphics runtime
- Compiler: Microsoft Visual C++ (MSVC) with C++20 support included in Visual Studio 2022
- Build System: CMake 3.20 or higher
- SDK: Windows 10/11 SDK
Navigate to the repository directory on your system.
Execute the automated build script to configure CMake and compile the release binary:
build.batLaunch the compiled application directly or execute the helper launcher script:
start.batThe application loads runtime settings from JSON profiles stored in the configs/ directory.
- Default Profile:
configs/default.json - Configurable Settings:
- UI themes, colors, and window layout preferences
- Keybindings for toggling interface visibility
- Frame rate caps and rendering performance toggles
Edit configs/default.json directly or use the in-app ImGui control panel to adjust options at runtime.
| Key | Function |
|---|---|
| INSERT | Toggle graphical interface menu visibility |
| END | Terminate and safely exit the application |
External-Overlay/
├── assets/ # Visual graphics assets and map textures
├── configs/ # Application configuration profiles (.json)
├── docs/ # Architectural documentation and role specifications
├── include/ # Public C++ interface headers (.hpp)
├── output/ # External data mapping schemas (.json)
├── src/ # C++ implementation source files (.cpp)
├── vendor/ # Third-party libraries (Dear ImGui and backends)
├── build.bat # Automated build compilation script
├── CMakeLists.txt # Primary CMake build system configuration
└── README.md # Project entrypoint documentation
For complete architectural details, see ARCHITECTURE.md.
This project is created strictly for educational purposes, software engineering research, and desktop UI architectural studies. It is provided "as is" without warranty of any kind. Users are responsible for complying with local software guidelines and third-party terms of service.
Special thanks to the contributors and third-party projects that make this project possible:
- Dear ImGui — Immediate mode GUI framework
- nlohmann/json — JSON serialization library for C++
- Contributors:
If you encounter build errors or have feature questions:
- Review the FAQ.md for quick solutions.
- Refer to CONTRIBUTING.md for environment setup and contribution standards.
This project follows Semantic Versioning (SemVer). Version history and change logs are tracked in CHANGELOG.md.
This project is licensed under the MIT License. See the LICENSE file for complete details.