Skip to content

Repository files navigation

EUI-NEO

EUI icon

Release License C++17 CMake 3.14+ OpenGL / Vulkan GLFW / SDL2 GitHub stars

简体中文 · Website

EUI-NEO is a cross-platform, high-performance, low-overhead C++17 UI framework with GLFW/SDL2 window backends and OpenGL/Vulkan render backends.

Preview

preview 1 preview 2
preview 3 preview 4
example 1 example 2

Quick Start

Requirements:

  • CMake 3.14+
  • A C++17 compiler: MSVC 19.29+ (Visual Studio 2019 16.11+), GCC/MinGW-w64 12+, or Clang 14+
  • OpenGL development files for the default renderer

Add EUI-NEO under external/EUI-NEO, then create:

cmake_minimum_required(VERSION 3.14)
project(MyProject LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(external/EUI-NEO)

add_executable(my_app app.cpp)
eui_neo_configure_app(my_app)

app.cpp:

#include "eui_neo.h"

namespace app {

const DslAppConfig& dslAppConfig() {
    static const DslAppConfig config = DslAppConfig{}
        .title("My App")
        .pageId("my_app")
        .windowSize(960, 640);
    return config;
}

void compose(eui::Ui& ui, const eui::Screen& screen) {
    ui.column("root")
        .size(screen.width, screen.height)
        .padding(32.0f)
        .content([&] {
            ui.text("title")
                .text("Hello EUI-NEO")
                .fontSize(28.0f)
                .build();
        })
        .build();
}

} // namespace app

Build:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
./build/my_app

eui_neo_configure_app() adds the selected GLFW/SDL2 entry point, links eui::neo, applies platform executable settings, and deploys the runtime assets. The application does not reference files under core/.

The release SDK supports the same target setup:

find_package(EuiNeo CONFIG REQUIRED)
add_executable(my_app app.cpp)
eui_neo_configure_app(my_app)

See the Integration Guide for installation, FetchContent, SDL2/Vulkan selection, and custom main loops. See Development And Release for building this repository and dependency requirements.

Xmake

Xmake 3.0+ is supported for source builds and xrepo library consumers:

set_languages("cxx17")
add_requires("eui-neo")

target("my_app")
    set_kind("binary")
    add_files("main.cpp", "app.cpp")
    add_packages("eui-neo")

The xrepo package provides the eui_neo library; main.cpp owns the window loop and application entry point. When building this repository directly, the eui.app rule adds the selected platform entry point and deploys assets.

Build a repository example:

xmake f -m debug -y --apps=y --user_apps=y
xmake build gallery
xmake f -m release -y --apps=y --user_apps=y
xmake build gallery

On Windows, the executable is .xmake/build/windows/x64/<debug|release>/gallery.exe. See the Integration Guide for backend options and other targets.

Optional Modules

Optional feature modules live under modules/ and are documented in the Modules Guide.

Project Layout

assets/       Runtime assets: fonts, PNG, SVG, and icons
components/   Reusable UI components built on top of the DSL
core/         DSL, Runtime, primitives, text, image, network, and platform code
docs/         Implementation notes and API documentation
examples/     Standalone gallery and example application sources
modules/      Optional feature modules such as keyboard and serial
apps/         User application sources; flat .cpp files or app folders
include/      Public include path: eui_neo.h and eui/* facade headers
tests/        Probe sources, fixture apps, and local benchmark notes
3rd/          Vendored third-party build sources and single-file dependencies

Docs

License

EUI-NEO's original source code is licensed under the Apache License 2.0. Third-party code under 3rd/, optional build-time dependencies fetched by CMake, and bundled fonts or icon fonts under assets/ follow their respective upstream licenses and copyright notices.

Contributors

Thank you to everyone who has contributed code, improved the documentation, reported issues, or shared feedback with EUI-NEO.

EUI-NEO contributors

About

EUI-NEO is a cross-platform, high-performance, low-overhead C++17 GPUI framework

Resources

Stars

1.7k stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages