neoGFX is a C++ app/game engine and development platform targeted at app and game developers that wish to leverage modern GPUs for performant application user interfaces and game graphics. neoGFX is still a work in progress (incomplete) so is not yet suitable for making apps or games. Currently neoGFX has only been built for and tested on Windows.
- clean modern C++ design leveraging C++20 and including full exception safety supporting various widget allocation patterns (stack, member variable or free store);
- use of standard non-proprietary C++ data types including using standard string classes (UTF-8 encoding) and containers from the C++ standard library;
- simple, easy to use multi-threaded event system (an improvement over traditional signals and slots);
- no baggage: neoGFX primarily contains only the GUI and graphics related functionality needed for creating apps and games;
- full library of widgets and layout managers specifiable in an RJSON (Relaxed JSON) derived declarative UI description language drag/drop editable using the included design tool, neoGFX Design Studio;
- CSS3 style sheet support with support for custom skins;
- scripting engine, neos, that will be able to support a wide range of scripting languages (on release: neoscript, JavaScript and Lua);
- sub-pixel text rendering;
- simple window style for specifying that a window is "nested" rather than being a separate native desktop window;
- "text_edit" widget supports multiple fonts, text colours (with optional gradient effects), colour emojis and rendering text in columns;
- "Green" and "Arcade" modes to optimize CPU power consumption, fight #ClimateChange!
- GPU shader rendered CSS3 compliant gradients with optional gaussian smoothing;
- MVC (model-view-controller) related classes supporting robust and fast app design;
- optional MDI support utilizing "nested" windows;
- 2D, 2.5D and 3D game support: sprites, objects and physics;
- Pure ECS (Entity-component-system) usable by both games and apps;
- flexible asset management: texture images (e.g PNGs) can be stored in .zip archives which can be optionally embedded inside the program binary accessible using simple URLs;
- support for OpenGL, DirectX and Vulkan.
Version | ETA | Features |
---|---|---|
v0.99 | WID* | Windows OpenGL; widget library feature complete; UI design tool |
v1.00 | WID + 12 months | Linux OpenGL; scripting engine |
v1.10 | WID + 24 months | Vulkan; Android support; physics engine |
v1.20 | WID + 36 months | macOS support |
* When It's Done
Feature | % done | TODO |
---|---|---|
Window | 95 | Drop shadow |
Dialog | 90 | Default button |
Message Box | 100 | |
Menu | 100 | |
Nested windows | 90 | |
MDI | 0 | |
Tabs | 95 | Vertical tabs |
Toolbars | 90 | Drop-down button support |
Layout Managers | 95 | Need to fully support size policies |
Label | 100 | |
Button | 100 | |
Table View | 95 | Selection; cell widget |
Tree View | 95 | |
List View | 95 | |
Text Edit | 90 | Columns; rich text (HTML); undo/redo |
Line Edit | 100 | |
Spin Box | 100 | |
Slider | 90 | Keyboard |
Check Box | 100 | |
Radio Button | 100 | |
Combo Box | 95 | Glob and regex filters; review UX. |
Group Box | 100 | |
Tool Tips | 0 | |
Status Bar | 100 | |
Progress Bar | 95 | |
Docks | 75 | |
Font Picker | 99 | Monospace filter |
Colour Gradient Selector | 95 | Swatch library |
Colour Picker | 100 | |
Date/Time | 0 | |
File Browsers (Native) | 99 | |
Drag and drop | 75 | |
UI/Resource Description (RJSON) | 40 | |
tool: neoGFX Design Studio | 10 | |
i18n | 70 | |
l10n | 0 | UK English, US English, French, German, Chinese |
HID: Game Controllers | 80 | Calibration/settings UI; DirectInput button mapping |
Multi-monitor | 50 | DPI changes when changing or dragging between monitors |
Scene Graph | 0 | |
Skins | 40 |