Source code for picogl.backend.geometry.legacy_mesh

"""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.mesh = mesh
[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, )