Source code for picogl.backend.geometry.adapter

"""Adapt existing DrawableBuffer implementors to GPUMesh."""

from __future__ import annotations

from typing import Any

from picogl.backend.geometry.mesh import GPUMesh


[docs] class DrawableBufferAdapter(GPUMesh): """Wrap a :class:`~picogl.protocols.drawable_buffer.DrawableBuffer` as GPUMesh.""" def __init__(self, buffer: Any, draw_kwargs: dict | None = None):
[docs] self._buffer = buffer
[docs] self._draw_kwargs = draw_kwargs or {}
[docs] def bind(self) -> None: self._buffer.bind()
[docs] def unbind(self) -> None: self._buffer.unbind()
[docs] def draw(self, mode: int) -> None: kwargs = dict(self._draw_kwargs) kwargs.setdefault("mode", mode) self._buffer.draw(**kwargs)
[docs] def delete(self) -> None: self._buffer.delete()