"""Legacy client-state GPU mesh."""
from __future__ import annotations
from typing import Any
from picogl.backend.geometry.legacy_mesh_binding import LegacyClientMeshBinding
from picogl.backend.geometry.mesh import GPUMesh
from picogl.backend.gl.enums import GLNumeric
from picogl.backend.gl.wrappers import gl_draw_elements
[docs]
class LegacyMesh(GPUMesh):
"""Client-array mesh binding from CPU ``MeshData`` or compatible objects."""
def __init__(self, mesh: Any):
[docs]
self._binding = LegacyClientMeshBinding(mesh)
[docs]
def bind(self) -> None:
self._binding.ensure_bound()
[docs]
def unbind(self) -> None:
self._binding.unbind()
[docs]
def draw(self, mode: int) -> None:
if self.mesh.indices is not None:
gl_draw_elements(
len(self.mesh.indices),
GLNumeric.UNSIGNED_INT,
mode,
pointer=self.mesh.indices,
)