All Projects → SpinyOwl → Legui

SpinyOwl / Legui

Licence: mit
Java OpenGL GUI library. Created for using with latest LWJGL (LWJGL 3).

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Legui

Element
Programmatic UI for macOS
Stars: ✭ 855 (+411.98%)
Mutual labels:  framework, gui
Assortedwidgets
OpenGL GUI library
Stars: ✭ 92 (-44.91%)
Mutual labels:  opengl, gui
Morda
🐶 GUI library in C++
Stars: ✭ 75 (-55.09%)
Mutual labels:  opengl, gui
Flaui
UI automation library for .Net
Stars: ✭ 892 (+434.13%)
Mutual labels:  framework, gui
Chopsui
An experimental UI toolkit
Stars: ✭ 130 (-22.16%)
Mutual labels:  opengl, gui
Xtd forms
Modern c++17 library to create native gui for Microsoft Windows, Apple macOS and Linux.
Stars: ✭ 25 (-85.03%)
Mutual labels:  framework, gui
Duality
a 2D Game Development Framework
Stars: ✭ 1,231 (+637.13%)
Mutual labels:  framework, opengl
Pesdk Android Demo
A fully customizable photo editor for your app.
Stars: ✭ 464 (+177.84%)
Mutual labels:  framework, opengl
O2
2D Game Engine with visual WYSIWYG editor
Stars: ✭ 121 (-27.54%)
Mutual labels:  framework, opengl
Iframework
Simple Unity Framework
Stars: ✭ 110 (-34.13%)
Mutual labels:  framework, gui
Mlt
MLT Multimedia Framework
Stars: ✭ 836 (+400.6%)
Mutual labels:  framework, opengl
Omnigui
A cross-platform GUI framework from scratch just to learn
Stars: ✭ 147 (-11.98%)
Mutual labels:  framework, gui
Jmcs
Java framework to homogenize your GUI across all the 3 main desktop OS, and further integrates your app to them.
Stars: ✭ 5 (-97.01%)
Mutual labels:  framework, gui
C Sharp Console Gui Framework
A GUI framework for C# console applications
Stars: ✭ 838 (+401.8%)
Mutual labels:  framework, gui
Arwes
Futuristic Sci-Fi UI Web Framework
Stars: ✭ 5,031 (+2912.57%)
Mutual labels:  framework, gui
Pyrustic
Lightweight framework and software suite to help develop, package, and publish Python desktop applications
Stars: ✭ 75 (-55.09%)
Mutual labels:  framework, gui
Imgui
Bloat-free Immediate Mode Graphical User interface for JVM with minimal dependencies (rewrite of dear imgui)
Stars: ✭ 394 (+135.93%)
Mutual labels:  opengl, gui
Open3d
Open3D: A Modern Library for 3D Data Processing
Stars: ✭ 5,860 (+3408.98%)
Mutual labels:  opengl, gui
Easyfxml
A collection of tools and libraries for easier development on the JavaFX platform!
Stars: ✭ 102 (-38.92%)
Mutual labels:  framework, gui
Borealis
Hardware accelerated, controller and TV oriented UI library for PC and Nintendo Switch (libnx).
Stars: ✭ 135 (-19.16%)
Mutual labels:  opengl, gui

REPO SIZE CODE SIZE Quality Gate Status License
Build and publish Build and publish
STABLE SNAPSHOT VERSION STABLE RELEASE VERSION

Discord


legui_api preview


TOC

LEGUI - What is it?

GUI implementation for using with LWJGL3.

This gui library made for using with OpenGL port (LWJGL) to allow programmers fast and easy integrate user interface to their OpenGL apps written in Java or Kotlin.
API is close to Swing API.

Examples

Radio button and text input Widgets TextArea
Button, togglebutton, checkbox, selectbox Sliders ScrollPanel

Contribution to LEGUI

See the contribution guide for more information.

System requirements

LEGUI requires Java 11+.

OpenGL state touched by the backend

Default renderer made on top of NanoVG which touches following states:

When textures are uploaded or updated, the following pixel store is set to defaults: GL_UNPACK_ALIGNMENT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS. Texture binding is also affected. Texture updates can happen when the user loads images, or when new font glyphs are added. Glyphs are added as needed start and end of render() method.

The data for the whole frame is buffered and flushed in end of rendering. The following code illustrates the OpenGL state touched by the rendering code:

	glUseProgram(prog);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_CULL_FACE);
	glCullFace(GL_BACK);
	glFrontFace(GL_CCW);
	glEnable(GL_BLEND);
	glDisable(GL_DEPTH_TEST);
	glDisable(GL_SCISSOR_TEST);
	glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
	glStencilMask(0xffffffff);
	glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
	glStencilFunc(GL_ALWAYS, 0, 0xffffffff);
	glActiveTexture(GL_TEXTURE0);
	glBindBuffer(GL_UNIFORM_BUFFER, buf);
	glBindVertexArray(arr);
	glBindBuffer(GL_ARRAY_BUFFER, buf);
	glBindTexture(GL_TEXTURE_2D, tex);
	glUniformBlockBinding(... , GLNVG_FRAG_BINDING);

Usage

Dependencies

Add dependency repo

For using this library you should add these urls as repositories:
For LWJGL and JOML dependencies
https://oss.sonatype.org/content/repositories/snapshots/
Also you can add your own versions of these libraries using LWJGL form.

For LEGUI and CBCHAIN dependency
https://raw.github.com/SpinyOwl/repo/releases
https://raw.github.com/SpinyOwl/repo/snapshots

For latest develop build you can use next repository: https://raw.github.com/SpinyOwl/repo/develop

And for feature you can use feature repository: https://raw.github.com/SpinyOwl/repo/feature

And add this dependency to your build script:

Add dependency (Maven):

<!-- LEGUI - SNAPSHOT - https://github.com/SpinyOwl/legui -->
<dependency>
   <groupId>org.liquidengine</groupId>
   <artifactId>legui</artifactId>
   <version>${legui_version}-SNAPSHOT</version>
</dependency>

OR

<!-- LEGUI - RELEASE/DEVELOP/FEATURE - https://github.com/SpinyOwl/legui -->
<dependency>
   <groupId>org.liquidengine</groupId>
   <artifactId>legui</artifactId>
   <version>${legui_version}</version>
</dependency>

Add dependency (Gradle):

// LEGUI - SNAPSHOT - https://github.com/SpinyOwl/legui
compile group: 'org.liquidengine', name: 'legui', version: legui_version + '-SNAPSHOT', changing: true;
// OR
// LEGUI - RELEASE/DEVELOP/FEATURE - https://github.com/SpinyOwl/legui
compile group: 'org.liquidengine', name: 'legui', version: legui_version, changing: true;

Demos:

All examples located under demo package.

Projects using LEGUI:

Modeler by Cout970

Open 3D Modeling Tool (Cout970/Modeler)
This tool is written in Kotlin, using LWJGL3 for rendering and Legui to build user interfaces

Links

LWJGL - Lightweight Java Game Library 3
JOML – Java OpenGL Math Library
CBCHAIN - Callback Chain for LWJGL3
NanoVG -Small antialiased vector graphics rendering library for OpenGL.

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