Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Modern OpenGL 3.3+ Framework inspired by Django

Project description

pypi travis Documentation Status


A Python 3 cross platform OpenGL 3.3+ core framework based on ModernGL

screenshot1 screenshot2

Originally made for for non-interactive real time graphics combined with music ("real time music videos", see demoscene) but can of course be used almost any purpose.

Made for people who enjoy playing around with modern OpenGL without spending lots of time creating all the tooling to get things up and running. Using ModernGL also makes working with OpenGL a breeze accomplishing a lot with very few lines of code.

A high priority for this project is also to help improving ModernGL.

Creating a project with a spinning cube can be done in less than a minute.

pip install demosys-py
demosys-admin createproject myproject
demosys-admin createeffect myproject/cube

Now run the effect

python runeffect myproject.cube


  • A simple effect system based on python packages
  • Supports most modern OpenGL features through ModernGL
  • Resource loading system for shader programs, textures, scenes and misc data
  • Loading GLTF 2.0 and wavefront obj files/scenes
  • Supports the rocket sync-tracker system to create interesting keyframe data (Using pyrocket)
  • Runtime re-loading shader programs (press R)
  • Supports headless rendering and various visible windows such as pyGLFW, PyQt5, PySDL2 and Pyglet.
  • Management commands for creting new projects and effects including the ability to make custom commands
  • A highly pluggable framework with customizable timers, resource loaders, timelines and more
  • A geometry module for quick creation of common mesh/VAO types
  • Experimental audio playback support


In order to use the framework it's an advantage to know the following:

  • Basic or intermediate Python
  • Basic glsl
  • Basic matrix math

If you are missing any of these requirements the framework can definitely be used to learn. 0 lines of code are needed to generate a project with a spinning cube and you can star poking at things.

Local Development

Installing the project in development mode (in a virtualenv):

python develop
# PyQt5 doesn't support develop and have to manually be force-reinstalled installed after
pip install -I PyQt5

Running tests:

# All tests
pip install -r requirements-test.txt
python test

# Single tests module
python test tests/

Building docs:

pip install -r docs/requirements.txt
python build_sphinx



  • ModernGL PyOpenGL replacement
  • PIL/Pillow for texture loading
  • Pyrrr for math (uses numpy)
  • PyQt5 is default for window/context creation (works out of the box on most platforms)


  • pyGLFW for window/context creation
  • pyglet for window/context creation (Does not work on OS X)
  • pygame using the mixer module for music
  • python-vlc for audio playback


Also consider supporting Read the Docs by becoming a gold member though a one time ($5 or more) donation for an ad-free experience.

Project details

Download files

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

Files for demosys-py, version 2.1.1
Filename, size File type Python version Upload date Hashes
Filename, size demosys_py-2.1.1-py3-none-any.whl (339.6 kB) File type Wheel Python version py3 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page