Giter Site home page Giter Site logo

i42output / neogfx Goto Github PK

View Code? Open in Web Editor NEW
541.0 40.0 51.0 115.68 MB

Cross-platform GPU-oriented C++ application/game framework

Home Page: http://neogfx.org/

License: GNU General Public License v3.0

C++ 99.40% C 0.03% HTML 0.02% GLSL 0.55%
gui game-library widget xml skin css cpp lua luajit ecs

neogfx's Introduction

Introduction

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.

Features (when version 1.0 released)

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

Roadmap

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

Implementation Progress

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

neogfx's People

Contributors

i42output avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neogfx's Issues

[Feature Request] Xml based view-configuration

First I want to say thanks for all your work and especially for publishing it all under GPLv3. You rock!
Did you ever consider implementing some theming support based on xml configuration files? SDL already is a good framework for game development. The neogfx project adds lots of UI components / framework, but as far as I know there is no "decent enough" game theming project out there. Maybe something XML based (a little bit like done in WPF) would be great! That would allow users / theme designers / modders to edit the look and feel of the applications UI, and software developers could focus more on the game logic, graphics effects, fixing bugs,... without having to care about horribly bad / legacy self-made theming systems to allow users to modify the location, size, partial transparency,... of user interface elements.

[Bug] Emoji problems

Following emoji sequence seems to have problems (first emoji repeated three times):

                       ๐Ÿ‘ฎ๐Ÿฟโ€โ™€๏ธ

๐Ÿ’ผ๐Ÿ‘œ๐Ÿ‘ž๐Ÿ’ผ๐ŸŽ›๐ŸŽ›๐ŸŽ›๐ŸŽ›๐Ÿ’ผ๐Ÿ‘ž
โนโนโนโนโนโนโนโนโนโน

[Improvement] Improve menu ux

Improve menu ux:

  • Don't destroy existing sub-menu and create new sub-menu until after a timeout after mouse stops being moved.

[Bug] High DPI problems

On High DPI monitors:

  • spin box buttons are too small;
  • gradient widget is too small;
  • toolbar icons are too small.

Duplicate Emoji glyphs rendered

โš“๏ธโš“๏ธโš“๏ธ is rendered as four or five glyphs (depending on text after it) rather than three.

Also ๐Ÿ‡ฌ๐Ÿ‡ง should render as a single flag glyph not two glyphs.

[Bug] Support font face object destruction.

Add support for font face object destruction (reference counted destruction); increase granularity of glyph texture bin packs so they can be freed more readily (suggest 512x512 textures for each font tace).

Move sub-pixel renderer FBO

Move sub-pixel renderer FBO from graphics context class to renderer class so it isn't created each frame.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.