Skip to main content

Python 3 wrapper for the EGL API

Project description

Pegl is a binding to EGL, written in native Python 3 through the ctypes library. It provides comprehensive access to EGL functions, while offering a Pythonic API.

EGL is a specification from the Khronos Group that provides an intermediate layer between other Khronos specifications (OpenGL, OpenGL ES, OpenVG), called “client APIs”, and the native graphics system. EGL can supply an implicit rendering context for each of the client APIs, as well as features like surfaces and buffering.

Pegl wraps EGL version 1.5, and is backwards compatible with previous versions of the specification.

The current Pegl version is 0.2a1. As an alpha version, care should be taken before making use of the library! Please test it out and open a GitHub issue to report the results.

License

Pegl is free software, released under the GNU GPLv3. See the file COPYING and individual source files for the full license terms.

Use

A typical use case might feature these steps:

  1. Create a Display instance

  2. Get a Config instance to match your requirements

  3. Bind the client API you want to use

  4. Get a Context instance and/or a Surface instance, as necessary

  5. Do your work in the client API

  6. Repeat from step 3 to mix different client APIs in the one application

Sample code for steps 1 to 4 might look like this:

>>> import pegl
>>> dpy = pegl.Display()
>>> conf = dpy.choose_config({pegl.ConfigAttrib.RENDERABLE_TYPE:
...                           pegl.ClientAPIFlag.OPENGL_ES})[0]
>>> pegl.bind_api(pegl.ClientAPI.OPENGL_ES)
>>> ctx = conf.create_context()
>>> surf = conf.create_pbuffer_surface({pegl.SurfaceAttrib.WIDTH: 640,
...                                     pegl.SurfaceAttrib.HEIGHT: 480})
>>> ctx.make_current(draw=surf)

Development and testing

Pegl uses tox to run tests and compile coverage data. Tests are currently set up for Python versions 3.7 through 3.9.

I test Pegl on Linux (Fedora with current Mesa releases) and on Windows (Windows 10 with current ANGLE releases). Please run tests on other platforms and open an issue to report your results!

The PEGLEGLVERSION environment variable

By default, Pegl will attempt to load all EGL functions up to version 1.5. If any of a given version’s functions cannot be loaded from the native library, it infers that the library does not support that version and stops there.

It is possible to force Pegl to stop early by setting the PEGLEGLVERSION environment variable. For instance, setting it to 1.4 will cause Pegl to not attempt loading EGL 1.5 functions, even if the library supports them.

This is used in the tests to check backwards compatibility, albeit imperfectly.

Roadmap

0.x series

Releases in this series will provide a wrapper that is Pythonic, but still fairly low-level, and the API is not guaranteed to be stable.

1.x series

Once the basic Pegl functionality is tested and considered usable, I will aim to improve the API, so that an EGL environment can be set up with a minimum of code. When I’m happy with the results, version numbers will be bumped up to 1.x, with a corresponding assurance of API stability.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Pegl-0.2a1.tar.gz (43.8 kB view details)

Uploaded Source

Built Distribution

Pegl-0.2a1-py3-none-any.whl (61.6 kB view details)

Uploaded Python 3

File details

Details for the file Pegl-0.2a1.tar.gz.

File metadata

  • Download URL: Pegl-0.2a1.tar.gz
  • Upload date:
  • Size: 43.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for Pegl-0.2a1.tar.gz
Algorithm Hash digest
SHA256 996cb72511844975c69e36737322292b9cb6137b186fc69ec7c4eefd8998e5a6
MD5 732a3d655800b320bbcb9ad45475fc03
BLAKE2b-256 ef74ac7798cd6248243ca50117d680053a03334a66a7c879d8e9b9b0b7cc75a4

See more details on using hashes here.

File details

Details for the file Pegl-0.2a1-py3-none-any.whl.

File metadata

  • Download URL: Pegl-0.2a1-py3-none-any.whl
  • Upload date:
  • Size: 61.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for Pegl-0.2a1-py3-none-any.whl
Algorithm Hash digest
SHA256 e1a2660427e5b547c877199444b6f64373e19b75a1f130dcbfc61a3750e135ab
MD5 84ddf93a4f3796f8429f013b30106693
BLAKE2b-256 84807780b026d3587fc1b41f92eefae2b0bebeac0485aea08f51c84c36e83634

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page