All Projects → natinusala → Borealis

natinusala / Borealis

Licence: apache-2.0
Hardware accelerated, controller and TV oriented UI library for PC and Nintendo Switch (libnx).

Programming Languages

cpp
1120 projects

Projects that are alternatives of or similar to Borealis

Raz
Modern & multiplatform game engine in C++17
Stars: ✭ 161 (+19.26%)
Mutual labels:  opengl, library, cross-platform
Fyne
Cross platform GUI in Go inspired by Material Design
Stars: ✭ 15,142 (+11116.3%)
Mutual labels:  hacktoberfest, cross-platform, gui
Libagar
Cross-Platform GUI Toolkit (stable)
Stars: ✭ 212 (+57.04%)
Mutual labels:  opengl, cross-platform, gui
Gwork
Skinnable GUI with useful widget collection. Fork of GWEN.
Stars: ✭ 179 (+32.59%)
Mutual labels:  library, cross-platform, gui
Limonengine
3D FPS game engine with full dynamic lighting and shadows
Stars: ✭ 331 (+145.19%)
Mutual labels:  hacktoberfest, opengl, cross-platform
Skui
Skia-based C++ UI framework
Stars: ✭ 218 (+61.48%)
Mutual labels:  opengl, cross-platform, gui
Flameshot
Powerful yet simple to use screenshot software 🖥️ 📸
Stars: ✭ 15,429 (+11328.89%)
Mutual labels:  hacktoberfest, cross-platform, gui
Cute headers
Collection of cross-platform one-file C/C++ libraries with no dependencies, primarily used for games
Stars: ✭ 3,274 (+2325.19%)
Mutual labels:  opengl, library, cross-platform
Rabbittoolbox
🤸🏾‍♀️👗开源的动画渲染软件,提倡以简单、易用,高质量的物理演算以及渲染质量和性能,为喜爱二次元动画的用户降低视频制作门槛
Stars: ✭ 309 (+128.89%)
Mutual labels:  opengl, glfw, cross-platform
Rust Pushrod
Cross Platform GUI Library for Rust
Stars: ✭ 292 (+116.3%)
Mutual labels:  opengl, glfw, gui
Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (+295.56%)
Mutual labels:  hacktoberfest, opengl, glfw
Hb Appstore
Homebrew App Store - GUI for downloading/managing homebrew apps for video game consoles
Stars: ✭ 463 (+242.96%)
Mutual labels:  nintendo-switch, homebrew, gui
Sfml
Simple and Fast Multimedia Library
Stars: ✭ 7,316 (+5319.26%)
Mutual labels:  hacktoberfest, opengl, cross-platform
Opengl cmake skeleton
❤️ A ready to use cmake skeleton using GLFW, Glew and glm. 👍
Stars: ✭ 118 (-12.59%)
Mutual labels:  opengl, glfw
Klayge
KlayGE is a cross-platform open source game engine with plugin-based architecture.
Stars: ✭ 1,646 (+1119.26%)
Mutual labels:  opengl, cross-platform
Hello imgui
Hello, Dear ImGui: cross-platform Gui apps for Windows / Mac / Linux / iOS / Android / Emscripten with the simplicity of a "Hello World" app
Stars: ✭ 120 (-11.11%)
Mutual labels:  cross-platform, gui
Hubspot3
python3.5+ hubspot client based on hapipy, but modified to use the newer endpoints and non-legacy python
Stars: ✭ 121 (-10.37%)
Mutual labels:  hacktoberfest, library
Kittehircclientlib
An IRC client library in Java
Stars: ✭ 116 (-14.07%)
Mutual labels:  hacktoberfest, library
Angular Open Source Starter
This is a starter project for creating open-source libraries for Angular. It is a full fledged Angular workspace with demo application and easy library addition. It is designed to be used for open-sourcing libraries on Github and has everything you'd need ready for CI, code coverage, SSR testing, StackBlitz demo deployment and more.
Stars: ✭ 120 (-11.11%)
Mutual labels:  hacktoberfest, library
Avalonia
A cross platform XAML framework for .NET
Stars: ✭ 12,588 (+9224.44%)
Mutual labels:  cross-platform, gui

borealis

Controller and TV oriented UI library for PC and Nintendo Switch (libnx).

WIP - See the Projects tab to follow the journey towards a stable version!

The code for the old version is available in the legacy branch.

  • Mimicks the Nintendo Switch system UI, but can also be used to make anything else painlessly
  • Hardware acceleration and vector graphics with automatic scaling for TV usage (powered by nanovg)
  • Can be ported to new platforms and graphics APIs by providing a nanovg implementation
  • Powerful layout engine using flex box as a base for everything (powered by Yoga Layout)
  • Automated navigation paths for out-of-the-box controller navigation
  • Out of the box touch support
  • Define user interfaces using XML and only write code when it matters
  • Use and restyle built-in components or make your own from scratch
  • Display large amount of data efficiently using recycling lists
  • Integrated internationalization and storage systems
  • Integrated toolbox (logger, animations, timers, background tasks...)

Documentation is available right here. As every documentation, it may not be up to date. Feel free to report any missing info or inconsistency you may find.

Building the demo for Switch

To build for Switch, a standard development environment must first be set up. In order to do so, refer to the Getting Started guide.

(sudo) (dkp-)pacman -S switch-glfw switch-mesa switch-glm
make -j
nxlink -s borealis_demo.nro

Building the demo for PC

To build for PC, the following components are required:

  • meson/ninja build system
  • A C++ compiler supporting the C++17 standard
  • GLFW version 3.3 or higher (as a static library)
  • GLM version 0.9.8 or higher

Please refer to the usual sources of information for your particular operating system. Usually the commands needed to build this project will look like this:

meson build
ninja -C build
./build/borealis_demo

Also, please note that the resources folder must be available in the working directory, otherwise the program will fail to find the shaders.

Building the demo for Windows using msys2

msys2 provides all packages needed to build this project:

pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-meson mingw-w64-x86_64-ninja mingw-w64-x86_64-pkg-config mingw-w64-x86_64-glfw mingw-w64-x86_64-glm
meson build
ninja -C build
./build/borealis_demo

Including in your project (TL;DR: see the demo makefile in this repo)

  1. Your project must be built as C++17 (-std=c++1z). You also need to remove -fno-rtti and -fno-exceptions if you have them
  2. Use a submodule (or even better, a subrepo) to clone this repository in your project
  3. Copy the resources folder to the root of your project
  4. For PC (meson):
    1. take a standard meson file
    2. use subdir to import the library folder
    3. use the borealis_files, borealis_dependencies, borealis_include and borealis_cpp_args variables for respectively objects to build, dependencies (glfw...), includes directory and cpp args
    4. add a BRLS_RESOURCES define pointing to the resources folder at runtime (so resources)
  5. For Switch:
    1. take a standard deko3d homebrew makefile (from the switch-examples repo)
    2. add a BOREALIS_PATH variable containing the subfolder you put the library in
    3. set ROMFS to the resources folder - borealis resources path is set to romfs:/ in borealis.mk
    4. use include to load borealis.mk (after LIBDIRS and BOREALIS_PATH)
    5. it's important for OUT_SHADERS to be set to shaders since nanovg will look for the shaders there
    6. if you have issues with the BRLS_RESOURCES define (missing quote terminator), change the @$(MAKE) line to @MSYS2_ARG_CONV_EXCL="-D;$(MSYS2_ARG_CONV_EXCL)" $(MAKE) in the Makefile (as in the demo Makefile)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].