# cococry/leif

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/cococry-leif).**

1,035 stars · 46 forks · C

## Links

- GitHub: https://github.com/cococry/leif
- awesome-repositories: https://awesome-repositories.com/repository/cococry-leif.md

## Topics

`gui` `imgui` `minimal` `modern` `opengl`

## Description

Leif is an OpenGL-backed immediate mode graphical user interface library and graphics rendering framework. It provides a lightweight control flow where layouts and components are rebuilt every frame without retaining an internal scene graph, backed by hardware-accelerated graphics.

The framework utilizes GPU-accelerated batch rendering to draw high volumes of primitives efficiently by grouping geometry into single vertex buffers. Developers can bypass standard rendering wrappers to access the underlying renderer directly, drawing raw graphics and custom geometry alongside standard interface components. 

Additional capabilities include event-driven input polling for capturing operating system mouse and keyboard states, and a stateless property modification system for dynamically configuring visual attributes each frame. The architecture exposes internal component data and rendering pipelines directly, allowing custom elements to be built client-side.

## Tags

### Graphics & Multimedia

- [Batch Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/gpu-accelerated-ui-rendering/batch-rendering.md) — Utilizes GPU-accelerated batch rendering to draw high volumes of primitives efficiently by grouping geometry into single vertex buffers.
- [Custom Graphics Rendering](https://awesome-repositories.com/f/graphics-multimedia/custom-graphics-rendering.md) — Utilizes an exposed batch rendering system to draw non-interface custom graphics alongside standard graphical elements. ([source](https://github.com/cococry/leif#readme))
- [Custom Renderable Interfaces](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/canvas-vector-graphics/custom-shape-rendering/custom-renderable-interfaces.md) — Enables building custom UI elements client-side by accessing the exposed internal state and rendering pipeline directly. ([source](https://github.com/cococry/leif#readme))
- [Graphics Rendering APIs](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis.md) — Allows developers to bypass standard rendering wrappers and interact with the underlying graphics API directly. ([source](https://github.com/cococry/leif/blob/main/README.md))
- [OpenGL Canvas Rendering](https://awesome-repositories.com/f/graphics-multimedia/opengl-canvas-rendering.md) — Builds custom graphical user interfaces powered by modern OpenGL with high-performance batch rendering and direct hardware acceleration.
- [Render Loop Execution](https://awesome-repositories.com/f/graphics-multimedia/render-loop-execution.md) — Manages graphical interface updates between initialization calls and execution boundaries within the main application loop. ([source](https://github.com/cococry/leif#readme))

### User Interface & Experience

- [Immediate Mode UI Libraries](https://awesome-repositories.com/f/user-interface-experience/component-utilities/ui-frameworks/rendering-models/immediate-mode-ui-libraries.md) — Provides an OpenGL-backed immediate mode graphical user interface library for rendering interactive windows and widgets.
- [Immediate Mode UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-ui-frameworks.md) — Rebuilds layouts and renders user interface components every frame without retaining an internal scene graph.
- [Window Initialization Routines](https://awesome-repositories.com/f/user-interface-experience/application-window-managers/window-initialization-routines.md) — Creates graphical application windows backed by hardware-accelerated rendering contexts for drawing interactive elements. ([source](https://github.com/cococry/leif/tree/main/include/leif))
- [Component Property Interfaces](https://awesome-repositories.com/f/user-interface-experience/component-property-interfaces.md) — Changes the appearance and property values of individual interface components through a flexible property system. ([source](https://github.com/cococry/leif/blob/main/README.md))
- [Input Event Polling](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/event-handling-architectures/event-handling-systems/event-queue-polling/input-event-polling.md) — Captures operating system mouse and keyboard states via event-driven polling during the main application loop.
- [Interface Appearance Customizations](https://awesome-repositories.com/f/user-interface-experience/interface-appearance-customizations/element-visuals/interface-appearance-customizations.md) — Updates the visual appearance of individual elements using a property system that controls every visible attribute. ([source](https://github.com/cococry/leif#readme))
- [Input State Monitors](https://awesome-repositories.com/f/user-interface-experience/interface-element-management/keyed-element-tracking/input-state-monitors.md) — Monitors keyboard and mouse states through a built-in input handling subsystem to drive interactive application logic. ([source](https://github.com/cococry/leif#readme))
- [Styled Properties](https://awesome-repositories.com/f/user-interface-experience/styled-properties.md) — Configures visual attributes and element appearances dynamically through a lightweight property modification system executed each frame.
- [User Input Processing](https://awesome-repositories.com/f/user-interface-experience/user-input-processing.md) — Processes mouse movements, clicks, and keyboard strokes from the operating system to drive interactive application states. ([source](https://github.com/cococry/leif/blob/main/README.md))

### Development Tools & Productivity

- [C++ Rendering Libraries](https://awesome-repositories.com/f/development-tools-productivity/header-only-libraries/c-rendering-libraries.md) — Provides a low-level visual component library in C++ offering direct access to underlying rendering contexts and custom batch graphics.

### Operating Systems & Systems Programming

- [Direct Block Access](https://awesome-repositories.com/f/operating-systems-systems-programming/block-device-access-synchronization/direct-block-access.md) — Bypasses standard abstraction layers to let developers draw raw graphics and custom geometry directly using the underlying renderer.
- [GPU-Accelerated UI Rendering](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-acceleration/graphics-acceleration/gpu-accelerated-ui-rendering.md) — Acts as a high-performance interface rendering framework that offloads drawing operations directly to the graphics processing unit.
