Source code for picogl.backend.modern.core.shader.load

from functools import wraps

from picogl.shaders.type import ShaderType


[docs] def load_shader(shader_type: ShaderType): """ A decorator to load the shader and set the MVP matrix. Args: shader_type (ShaderType): The type of shader to use. """ def decorator(func): @wraps(func) def wrapper(*args, **kwargs): # Extract the necessary arguments shader_manager = kwargs.get("shader_manager") mvp_matrix = kwargs.get("mvp_matrix") zoom_scale = kwargs.get("zoom_scale") if not shader_manager or not mvp_matrix: raise ValueError( "shader_manager and mvp_matrix must be provided as keyword arguments." ) # Use the shader and set the MVP matrix shader_manager.use_shader_type( shader_type=shader_type, mvp_matrix=mvp_matrix, zoom_scale=zoom_scale ) # Execute the original function return func(*args, **kwargs) return wrapper return decorator