Source code for yt_idv.rendering_contexts

import os

import OpenGL.error


[docs]def render_context(engine="pyglet", **kwargs): """ Return the appropriate rendering context. At present, this accepts "pyglet", "osmesa" or "egl" Parameters ---------- engine: str, "pyglet", "osmesa" or "egl" Returns ------- RenderingContext """ if engine == "pyglet": from .pyglet_context import PygletRenderingContext try: return PygletRenderingContext(**kwargs) except OpenGL.error.Error as oee: msg = str(oee) if "no valid context" in msg: extramsg = ( "It looks like you have encountered an OpenGL context error while trying to start the GUI. " "If you are running headless, try specifying 'osmesa' or 'egl' with the engine argument. If you " "are running a newer Ubuntu (21+) or Fedora (34+) release, you may need to enforce Xorg usage " "in PyOpenGL: see https://yt-idv.readthedocs.io/en/latest/installation.html#extra-steps-for-linux" ) raise Exception(extramsg) from oee raise oee elif engine == "osmesa": os.environ["PYOPENGL_PLATFORM"] = "osmesa" from .osmesa_context import OSMesaRenderingContext return OSMesaRenderingContext(**kwargs) elif engine == "egl": os.environ["PYOPENGL_PLATFORM"] = "egl" from .egl_context import EGLRenderingContext return EGLRenderingContext(**kwargs) else: raise KeyError