• Stars
    star
    687
  • Rank 65,799 (Top 2 %)
  • Language
    C
  • License
    MIT License
  • Created over 10 years ago
  • Updated 3 months ago

Reviews

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

Repository Details

GL4ES is a OpenGL 2.1/1.5 to GL ES 2.0/1.1 translation library, with support for Pandora, ODroid, OrangePI, CHIP, Raspberry PI, Android, Emscripten and AmigaOS4.

logo

GL4ES - OpenGL for GLES Hardware

gl4es build status

This is a library provide OpenGL 2.x functionality for GLES2.0 accelerated Hardware (and of course also support OpenGL 1.5 function, sometimes better than when using GLES 1.1 backend) There is also support for GLES 1.1 Hardware, emulating OpenGL 1.5, and some OpenGL 2.x+ extensions.

GL4ES is known to work on many platform: OpenPandora, ODroid, RaspberryPI (2 and 3 at least), PocketCHIP, "otherfruit"PI (like the OrangePI), Android, iOS, x86 and x86_64 Linux (tested using mesa-egl). There is also some WIP support for AmigaOS4, using experimental GLES2 driver for Warp3D.

This library is based on glshim (https://github.com/lunixbochs/glshim) but as now evolved far from it, with different feature set and objectives. Go check this lib if you need things like RemoteGL or TinyGLES (for software rendering).

The focus is on compatibility and speed with a wide selection of game and software.

It has been tested successfully of a large selection of games and software, including: Minecraft, OpenMW, SeriousSam (both First and Second Encounters), RVGL (ReVolt GL), TSMC (The Secret Maryo Chronicles), TORCS, SpeedDreams, GL-117, Foobillard(plus), half life 1&2, Blender 2.68 to name just a few. I have also some success with Linux port of XNA games, using either MonoGame or FNA.

Most function of OpenGL up to 1.5 are supported, with some notable exceptions:

  • Reading of Depth or Stencil buffer will not work
  • GL_FEEDBACK mode is not implemented
  • No Accum emulation

Some known general limitations:

  • GL_SELECT as some limitation in its implementation (for example, current Depth buffer or bounded texture are not taken into account, also custom vertex shader will not work here)
  • NPOT texture are supported, but not with GL_REPEAT / GL_MIRRORED, only GL_CLAMP will work properly (unless the GLES Hardware support NPOT)
  • Multiple Color attachment on Framebuffer are not supported
  • OcclusionQuery is implemented, but with a 0 bits precision
  • Probably many other things

Status of the GLES2 backend

  • The FPE (Fixed Pipeline Emulator) has most OpenGL 1.5 drawing call implemented
  • The Shader Conversion is really crude, so only simple shaders will work (especially, the implicit conversion float <-> int is not handled)
  • ARB_program are supported (converted on-the-fly to glsl shaders)
  • Lighting support double-side and color separation
  • FogCoord are supported, along with secondary color
  • An ES2 context should be usable (useful for SDL2)
  • OpenGL 2.x games that have been tested include: OpenRA, GZDoom, Danger from the Deep, SuperTuxKart 0.8.1, Hammerwatch, OpenMW, half life 2, many FNA & MonoGames games (FEZ, Towerfall Ascension, Stardew Valley, Dust, Owlboy, and many other), even some Unity3D games (Teslagrad, Colin McRea Rally remake and other)...
  • glxgears works, but FlatShade is not implemented (and will probably never be), so it's slightly different than using GLES1.1 or actual GL hardware
  • GL_TEXTURE_1D, GL_TEXTURE_3D and GL_TEXTURE_RECTANGLE_ARB are not yet supported in shaders (they are supported in fixed pipeline functions), and texture 3D are just a single 2D layer for now.
  • Program that link only a GL_FRAGMENT or GL_VERTEX shader are not supported yet.
  • Some VBO are used.

Status of the GLES1.1 backend

  • Framebuffer use FRAMEBUFFER_OES extension (that must be present in the GLES 1.1 stack)
  • Lighting doesn't support double-side or color separation
  • FogCoord or Secondary colors are not supported
  • GL_TEXTURE_3D are just a single 2D layer (the 1st layer).
  • VBO are supported, but they are emulated, even if VBO if supported in GLES1.1 driver

If you use gl4es in your project (as a static or dynamic link), please mention gl4es in you readme / about / whatever.


Compiling

How to compile and per-platform specific comment can be found here


GLU

Standard GLU do works without any issues. You can find a version here if you need one.


Installation

Put lib/libGL.so.1 in your LD_LIBRARY_PATH. Beware that GL4ES is meant to replace any libGL you can have on your system (like Mesa for example)


Usage

There are many environment variable to control gl4es behavior, also usable at runtime using glHint(...).

See here for all variables and what they do.


Media (what is working already)

Some screenshot and youtube links of stuffs that works here


Version history

The change log is here

More Repositories

1

box64

Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices
C
3,657
star
2

box86

Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
C
3,264
star
3

hydracastlelabyrinth

A port to Linux (and OpenPandora / DragonBox Pyra / ODroid / PocketCHIP / GameShell / AmigaOS4 / MorphOS / Emscripten) of Hydra Castle Labyrinth (a "metroidvania" kind of game). Status: Working.
C
82
star
4

stuntcarremake

A port of Stunt Car Remake to OpenPandora, Linux and Emscripten. Status: Working
C++
69
star
5

box86-compatibility-list

Box86 Compatibility List (Games and Software)
61
star
6

ctp2

Civ: CTP2 (Call to Power 2) port to Linux, Pandora and Pyra. Status: Working
C++
30
star
7

prototype

ProtoType (RType remake) version for Linux, Pandora, ODroid, AmigaOS4 and Emscripten. Status: Working.
C++
16
star
8

roadfighter

Port of Roadfighter from Brain Games to the OpenPandora, ODroid and Linux - Status: Working
C++
15
star
9

fakemodex

A simple wrapper to allow playing games that use FMODex with FMOD
C
11
star
10

friking-shark

Port of Friking Shark (remake of Flying Shark) on the OpenPandora, Odroid and most Linux. Also with AmigaOS4 support. Status: Working (using gl4es).
C
11
star
11

freespace2

Freespace & Freespace 2 sources code (from Icculus) with added support for Pandora (ARM cpu and GLES rendering). Status: Working
C++
10
star
12

GLU

libGLU for Linux, OpenPandora and Android
C
10
star
13

OpenArenaPandora

OpenArena version for OpenPandora, featuring ARM support and GLES renderer.. Status: Working
C
10
star
14

SDL2

SDL2 (with support for Pandora, and CHIP). Status: Working
C
9
star
15

zandronum

Zandronum, with ARM support. Status: working
C++
7
star
16

mupen64plus-pandora

Mupen64plus v2.0 for Pandora, with larges chunks from mupen64plus-ae from PAULSCODE. Status: Working
C++
6
star
17

SDL_sound

SDL_sound 1.0.3, with tremor support, that can be compiled for SDL 1.2 or SDL2
C
5
star
18

sais

Strange Adventure in Infinite Space for Linux and Pandora. Status: Working.
C++
5
star
19

f1spirit

F1-Spirit from BrainGames adapted to the Pandora (so ARM and GLES). Status : Working.
C++
4
star
20

bloboats

OpenPandora port of Bloboats (Float instead of Double, optional GLES 1.1 support). Status: Working
C++
4
star
21

gravitybone-pandora

Pandora port. Status: Working, Pandora works, other Linux should work with minimal changes.
C
4
star
22

RtCW-OpenPandora

Return to Castle Wolfenstein for OpenPandra (featuring ARM support and GLES renderer). Status: Working
C
4
star
23

libgsalt

Grain of SALT, the Geometry Simplification At Load Time library
C++
3
star
24

WoP-Pandora

Word of Padman for OpenPandora (featuring ARM support and GLES renderer). Status: Working
C
2
star
25

transball

Port of TransballGL to the OpenPandora (using gl4es) - Status: WIP
C++
2
star
26

CandyCrisis

Unofficial Linux and Pandora port for the OpenSource game Candy Crysis. Status: Working
C++
2
star
27

rexwb

Small tool to resample (downsample) *.xwb XNA Wave Banks
C++
1
star
28

starshatter-open

Automatically exported from code.google.com/p/starshatter-open
HTML
1
star
29

trigger-rally-pandora

Trigger Rally for OpenPandora (OpenGLES 1.1 support). Status: Working.
1
star
30

UFO--AI-OpenPandora

UFO: Alien Invasion for OpenPandora (featuring ARM support and GLES renderer). Status: Working (based on 2.4 sources)
C
1
star
31

warsow-pandora

Pandora port. Status: Working on the Pandora.
C
1
star
32

libstreamhlp

Helper Library to use Streaming extension on the OpenPandora. Status: Working
C
1
star
33

Allegro-5

Allegro 5.2 port on OpenPandra, and ODroid - Status: Looks working, need more tests
C
1
star