~signal_processor/ddui

A collection of crates for 2d ui development
Initialize rgb(a) colors from strings
Clear text texture when making scene

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~signal_processor/ddui
read/write
git@git.sr.ht:~signal_processor/ddui

You can also use your local clone with git send-email.

ddui is a set of crates for making 2d ui for apps.

ddui started because of my inability to find a frameowrk suitable for my needs (low-latency, performant GPU-accelerated 2d rendering, simple or modular architecture, functional on web, and desktop as a parent or child window). It does not aim to be a framework, but a collection of tools to aid 2d rendering. Application state and management should be handled elsewhere.

Currently, it provides a common abstraction for window initialization and event handling on desktop and web (mobile might be desired later), both standalone and in the context of an audio plugin host (where the window is provided by another program).

Also provided are abstractions for handling GPU API backends (wgpu and glow), Rendering scenes of 2d primitives, describing primitives in a renderer-agnostic way with serdeable data structs, and simple color and 2d layout crates that mostly re-export other crates.

ddui is currently using wgpu for rendering. As the features and API of the renderer stabilize, an OpenGL backend using glow will be added.

Rendering in ddui is handled by passing a Scene of Shape Primitives to the Renderer and building a renderer-specific scene that can then be drawn on demand. The supported primitives are Rectangles, Ellipses, Lines, basic Text, Arcs, Polygons, and Texture rendering (the graphics crate provides methods for writing images or svgs to a texture).

Some non features would be anything having to do with state management, or bloat via helpful utilities (which is slowly creeping into the batteries crate, unfortunately). That being said, feedback on making such things on top of ddui would be welcome.

ddui is currently not ready for professional use. The API is unstable, there is no documentation, and bug-testing has been limited to Linux, Mac, and Web.