From BlenderWiki

Jump to: navigation, search

OpenGL Refactoring

For Blender 2.8 we are refactoring the OpenGL drawing system to replace legacy code and switch to OpenGL 3.3 core and OpenGL ES 3.0 minimum.

Once the underlying code has been refactored, we can more easily improve performance, add a PBR material workflow, bring OpenSubdiv to our Mac users, implement more viewport effects and so on.

The pared down OpenGL core profile is also much closer to Vulkan, should we want to support that in the future.

Current Work

For Blender 2.77 we already require a minimum of OpenGL 2.1, which means support for VBOs and shaders is always available. We are continuously refactoring OpenGL in the master branch to replace features that are deprecated in modern OpenGL, while still keeping Blender functional. In the Blender 2.8 branch we have increased the minimum OpenGL requirements to allow more drastic changes. See T49012 for details.


There are various things to be done, but we still need to work out the designs before we can split up things into bite size tasks for more volunteers to get involved.

Tasks to work on are also listed in T49165


You can always find developers in our IRC channel: #blendercoders

Or join the viewport mailinglist:

For tracking changes on, see the OpenGL project and commits with OpenGL in the description.

Automated Testing

A script for regression testing exits in the tests repository. It can be used to automatically take screenshots of .blend files with an old and new Blender build and compare them.

When doing major refactoring you can for example compare all test .blends, to find any unexpected changes.

./opengl/ /path/to/new/blender /path/to/old/blender */*.blend

Addon Compatibility

When we switch to the OpenGL 3.3 core profile in Blender 2.8, addons that do OpenGL drawing will no longer be able to use deprecated functions. Old functions have already been removed from bpy.

We will give addon writers a way to draw into editors, but the exact API needs to be designed.