Source code for picogl.backend.gl.state.cull_face

"""
gl Cull Face
"""

from contextlib import contextmanager

from OpenGL.raw.GL.VERSION.GL_1_0 import GL_CULL_FACE, glDisable, glEnable, glIsEnabled


[docs] class GLCullFace: """Cull face state wrapper""" @staticmethod
[docs] def is_enabled() -> bool: return glIsEnabled(GL_CULL_FACE)
@staticmethod
[docs] def enable() -> None: glEnable(GL_CULL_FACE)
@staticmethod
[docs] def disable() -> None: glDisable(GL_CULL_FACE)
[docs] def gl_capability_enabled(capability: int) -> bool: return bool(glIsEnabled(capability))
[docs] def gl_set_capability(capability: int, enabled: bool) -> None: if enabled: gl_enable(capability) else: glDisable(capability)
@contextmanager
[docs] def preserve_gl_capability(capability: int): was_enabled = gl_capability_enabled(capability) try: yield finally: gl_set_capability(capability, was_enabled)
@contextmanager
[docs] def cull_face(enabled: bool = True): with preserve_gl_capability(GL_CULL_FACE): gl_set_capability(GL_CULL_FACE, enabled) yield