Source code for picogl.backend.legacy.core.renderer.opengl

"""
Provides a legacy OpenGL rendering backend for handling OpenGL state changes
and material properties.

This module defines the `LegacyOpenGLBackend` class, which allows enabling
and disabling OpenGL capabilities, configuring blending functions, managing
depth masks, and setting material properties. It serves as an abstraction
over low-level OpenGL calls using the pyOpenGL library.
"""

from picogl.backend.gl.capability import FACE_MAP, GLMaterialFace, PhongMaterial
from picogl.backend.gl.state.fill import GLLightParameter
from picogl.backend.gl.wrappers.blending import gl_blend_func
from picogl.backend.gl.wrappers.depth import gl_get_depth_mask, gl_set_depth_mask
from picogl.backend.gl.wrappers.enable import gl_disable, gl_enable, gl_is_enabled
from picogl.backend.gl.wrappers.material import gl_material_f, gl_material_fv
from picogl.renderer.backend import RenderBackend


[docs] class LegacyOpenGLBackend(RenderBackend): """Legacy OpenGL Backend"""
[docs] def enable(self, cap): gl_enable(cap)
[docs] def disable(self, cap): gl_disable(cap)
[docs] def is_enabled(self, cap): return gl_is_enabled(cap)
[docs] def set_blend_func(self, src, dst): gl_blend_func(src, dst)
[docs] def set_depth_mask(self, flag): gl_set_depth_mask(flag)
[docs] def get_depth_mask(self): return gl_get_depth_mask()
[docs] def set_material(self, face: GLMaterialFace, mat: PhongMaterial): f = FACE_MAP[face] gl_material_fv(f, GLLightParameter.AMBIENT, mat.ambient) gl_material_fv(f, GLLightParameter.DIFFUSE, mat.diffuse) gl_material_fv(f, GLLightParameter.SPECULAR, mat.specular) gl_material_f(f, GLLightParameter.SHININESS, mat.shininess)