from picogl.backend.gl.enums import GLNumeric
from picogl.backend.gl.state.client import GLClientState
from picogl.backend.gl.wrappers import (
gl_disable_legacy_client_state,
gl_enable_legacy_client_state,
)
from picogl.backend.gl.wrappers.pointer import (
gl_color_array_pointer,
gl_normal_array_pointer,
gl_texcoord_array_pointer,
gl_vertex_array_pointer,
)
[docs]
class LegacyAttributeBinder:
"""Legacy client-state and vertex attribute pointer operations."""
@staticmethod
[docs]
def enable_vertex_array():
gl_enable_legacy_client_state(GLClientState.VERTEX)
@staticmethod
[docs]
def disable_vertex_array():
gl_disable_legacy_client_state(GLClientState.VERTEX)
@staticmethod
[docs]
def set_vertex_pointer(data):
gl_vertex_array_pointer(pointer=data, size=3, num_type=GLNumeric.FLOAT)
@staticmethod
[docs]
def enable_normal_array():
gl_enable_legacy_client_state(GLClientState.NORMAL)
@staticmethod
[docs]
def disable_normal_array():
gl_disable_legacy_client_state(GLClientState.NORMAL)
@staticmethod
[docs]
def set_normal_pointer(data):
gl_normal_array_pointer(pointer=data, num_type=GLNumeric.FLOAT)
@staticmethod
[docs]
def enable_color_array():
gl_enable_legacy_client_state(GLClientState.COLOR)
@staticmethod
[docs]
def disable_color_array():
gl_disable_legacy_client_state(GLClientState.COLOR)
@staticmethod
[docs]
def set_color_pointer(data, size):
gl_color_array_pointer(pointer=data, size=size, num_type=GLNumeric.FLOAT)
@staticmethod
[docs]
def enable_texcoord_array():
gl_enable_legacy_client_state(GLClientState.TEXCOORD)
@staticmethod
[docs]
def disable_texcoord_array():
gl_disable_legacy_client_state(GLClientState.TEXCOORD)
@staticmethod
[docs]
def set_texcoord_pointer(data):
gl_texcoord_array_pointer(pointer=data, size=2, num_type=GLNumeric.FLOAT)