/ttauri-gui

Low Latency GUI on top of Vulkan

Primary LanguageC++Boost Software License 1.0BSL-1.0

TTauri GUI library Build on Windows Version License

A portable, low latency, retained-mode GUI framework written in C++

I started this library to make a portable, low latency and modern looking UI framework, which may also be used in proprietary (closed source) applications.

It is specifically designed to display information with low-latency, and at the screen's refresh rate. Special care is taken for making it easy for GUI element to observe and modify data external to the GUI.

You can find a lot more information, documentation, example code, news and blog posts on the main web site: https://www.ttauri-project.org/

Features

  • High level API to make simple desktop applications.
  • Modern C++20 library.
  • Retained-mode GUI.
  • GUI will dynamically track the state of the application.
  • Localization and translation.
  • Animation at the screen's refresh rate.
  • Themes; including light/dark support.
  • Editable key-bindings.

Themes with dark and light mode

  • Most or all drawing is GPU accelerated with Vulkan.
  • Text is drawn using kerning, perceptional correct blending and subpixel anti-aliasing.
  • High dynamic range and high gamut color handling.

Subpixel anti-aliasing

  • Automatic application preferences storage.
  • Many support systems:
    • logging,
    • statistics,
    • text handling,
    • text template language,
    • expression language,
    • dynamic type system.

Example

Here is some example code for an application with three radio buttons, who form a set by sharing a single value observable.

int tt_main(int argc, char *argv[])
{
    observable<int> value = 0;

    auto &window = gui_system::global().make_window(l10n("Radio button example"));
    window.content().make_widget<label_widget>("A1", l10n("radio buttons:"));
    window.content().make_widget<radio_button_widget>("B1", l10n("one"), value, 1);
    window.content().make_widget<radio_button_widget>("B2", l10n("two"), value, 2);
    window.content().make_widget<radio_button_widget>("B3", l10n("three"), value, 3);

    return gui_system::global().loop();
}

Platform support

The following platforms are supported:

  • MSVC - Windows 10 - x64

For hardware support see: hardware_support

Installation

If you like to help with the development or want to modify ttauri you can find instruction how to install the dependencies and how to build ttauri in the CONTRIBUTING document.

If you want to use ttauri as a library for your own application you can find instructions in the ttauri_hello_world example application's README.

Sponsors

The following people and companies are platinum sponsors:

There are currently no platinum sponsors.

for more sponsors please see SPONSORS.