"""
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