• Stars
    star
    146
  • Rank 252,769 (Top 5 %)
  • Language
    Kotlin
  • License
    MIT License
  • Created over 5 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A lightweight Kotlin multiplatform framework for OpenGL ES and EGL management based on object-oriented components, inspired by Google's Grafika.

Build Status Release Issues

â €

Looking for a powerful camera library? Take a look at our CameraView.

Transcoding videos with Egloo? Take a look at our Transcoder.

Need support, consulting, or have any other business-related question? Feel free to get in touch.

Like the project, make profit from it, or simply want to thank back? Please consider sponsoring me!

Egloo

Egloo is a simple and lightweight multiplatform framework for OpenGL ES drawing and EGL management that uses object-oriented components - hence the name Egloo. It can serve as a basis for complex drawing operations, but is mostly designed for helping in making common tasks simpler, even for people that do not have any OpenGL experience.

Approaching OpenGL from high-level languages can be hard because of the deep differences in the OpenGL API design with respect to a typical object-oriented context. Egloo tries to take some of these difficulties away by creating a thin, flexible layer of abstraction around EGL and GLES calls.

You can take a look at the demo app or see Egloo in action in some popular Android projects:

Starting from 0.5.0, Egloo can run on native targets. We provide an implementation for Android native libraries, but other targets like iOS can probably be added easily.

// Regular Android projects
implementation("com.otaliastudios.opengl:egloo:0.6.1")

// Kotlin Multiplatform projects: add egloo-multiplatform to your common source set.
implementation("com.otaliastudios.opengl:egloo-multiplatform:0.6.1")

// Kotlin Multiplatform projects: or use the granular dependencies:
implementation("com.otaliastudios.opengl:egloo-android:0.6.1") // Android AAR
implementation("com.otaliastudios.opengl:egloo-androidnativex86:0.6.1") // Android Native KLib
implementation("com.otaliastudios.opengl:egloo-androidnativex64:0.6.1") // Android Native KLib
implementation("com.otaliastudios.opengl:egloo-androidnativearm32:0.6.1") // Android Native KLib
implementation("com.otaliastudios.opengl:egloo-androidnativearm64:0.6.1") // Android Native KLib

Features

  • EGL setup and management [docs]
  • GLSurfaceView utilities [docs]
  • Drawables abstraction [docs]
  • Programs abstraction [docs]
  • Scenes to hold view and projection matrix [docs]

â €

â €

Support

If you like the project, make profit from it, or simply want to thank back, please consider sponsoring me through the GitHub Sponsors program! You can have your company logo here, get private support hours or simply help me push this forward.

Feel free to contact me for support, consulting or any other business-related question.

Setup

Please read the official website for setup instructions and documentation. You might also be interested in our changelog. Using Egloo is very simple. The function below will create a context, draw a red triangle and release:

// Configure an EGL context and window
val core = EglCore()
val window = EglWindowSurface(core, outputSurface)
window.makeCurrent()

// Draw
val drawable = GlTriangle() // GlDrawable: what to draw
val program = GlFlatProgram() // GlProgram: how to draw
program.setColor(Color.RED)
program.draw(drawable)

// Publish what we have drawn
// The outputSurface will receive our frame
window.swapBuffers()

// Release
program.release()
window.release()
core.release()

More Repositories

1

CameraView

📸 A well documented, high-level Android interface that makes capturing pictures and videos easy, addressing all of the common issues and needs. Real-time filters, gestures, watermarks, frame processing, RAW, output of any size.
Java
4,943
star
2

ZoomLayout

2D zoom and pan behavior for View hierarchies, images, video streams, and much more, written in Kotlin for Android.
Kotlin
1,051
star
3

Autocomplete

Simple yet powerful autocomplete behavior for EditTexts, to avoid working with MultiAutoCompleteTextView APIs.
Java
357
star
4

BottomSheetCoordinatorLayout

A handy CoordinatorLayout that works well when used in a bottom sheet, even with AppBarLayouts inside.
Java
268
star
5

ViewPrinter

Live preview, edit and print functionality for View hierarchies. Supports PDF, PNG, JPEG.
Java
190
star
6

GIFCompressor

An Android tool to compresses your GIFs into lightweight MP4 video using fast, hardware-accelerated encoders. Supports cropping, rotation, GIF concatenation and much more.
Java
123
star
7

Elements

âš’ Modular components for RecyclerView development enforcing clean, reusable and testable code, with built-in support for paging and complex hierarchies of data.
Kotlin
82
star
8

whatsapp-database-merger

Small command-line utility to safely merge multiple WhatsApp backups (msgstore.db) into one.
Kotlin
65
star
9

NestedScrollCoordinatorLayout

A CoordinatorLayout that implements nested scrolling and propagates scroll events to parent views.
Java
63
star
10

Firestore

The lightweight, efficient Android wrapper for Google's Firestore model data.
Kotlin
33
star
11

ConstrainedScrollBehavior

An AppBarLayout.ScrollingViewBehavior that adapts scrolling view height based on its content.
Java
18
star
12

Elements-Deprecated

A library of reusable components for RecyclerView, simplifying the development of complex adapters.
Java
11
star
13

Playground

Kotlin
1
star