This is the low level rendering API in Arcade and is used internally for all drawing/rendering. It’s a higher level wrapper over OpenGL 3.3+ core and gives the user easy access to GPU programs (shaders), textures, framebuffers, queries, buffers, vertex arrays/geometry and compute shaders (Note that compute shaders are not supported on MacOS).
This API is also heavily inspired by ModernGL. It’s basically a subset of ModernGL except we are using pyglet’s OpenGL bindings. However, we don’t have the context flexibility and speed of ModernGL, but we are at the very least on par with PyOpenGL or slightly better because pyglet’s OpenGL bindings are very light. The higher level abstraction is the main selling point as it saves the user from an enormous amount of work.
This API can also be used with pyglet by creating an instance
arcade.gl.Context after the window creation.
arcade.ArcadeContext on the other hand
extends the default Context with arcade specific helper methods
and should only be used by arcade.
Some prior knowledge of OpenGL might be needed to understand how this API works, but we do have examples in the experimental directory (git).