picogl.backend.geometry ======================= .. py:module:: picogl.backend.geometry .. autoapi-nested-parse:: Geometry binding layer: CPU mesh data to GPU draw units. Submodules ---------- .. toctree:: :maxdepth: 1 /autoapi/picogl/backend/geometry/adapter/index /autoapi/picogl/backend/geometry/factory/index /autoapi/picogl/backend/geometry/legacy_mesh/index /autoapi/picogl/backend/geometry/legacy_mesh_binding/index /autoapi/picogl/backend/geometry/mesh/index /autoapi/picogl/backend/geometry/modern_mesh/index Classes ------- .. autoapisummary:: picogl.backend.geometry.DrawableBufferAdapter picogl.backend.geometry.GLBindingStrategy picogl.backend.geometry.LegacyBinding picogl.backend.geometry.ModernBinding picogl.backend.geometry.LegacyMesh picogl.backend.geometry.GPUMesh picogl.backend.geometry.ModernMesh Package Contents ---------------- .. py:class:: DrawableBufferAdapter(buffer: Any, draw_kwargs: dict | None = None) Bases: :py:obj:`picogl.backend.geometry.mesh.GPUMesh` Wrap a :class:`~picogl.protocols.drawable_buffer.DrawableBuffer` as GPUMesh. .. py:attribute:: _buffer .. py:attribute:: _draw_kwargs .. py:method:: bind() -> None Bind GPU buffers or client arrays for drawing. .. py:method:: unbind() -> None Release binding after draw (optional). .. py:method:: draw(mode: int) -> None Issue draw calls for the bound mesh. .. py:method:: delete() -> None Release GPU resources (optional). .. py:class:: GLBindingStrategy Bases: :py:obj:`abc.ABC` Upload CPU mesh data to a reusable :class:`GPUMesh`. .. py:attribute:: _last_gpu_mesh :type: picogl.backend.geometry.mesh.GPUMesh | None :value: None .. py:method:: upload(mesh: picogl.renderer.meshdata.MeshData) -> picogl.backend.geometry.mesh.GPUMesh :abstractmethod: .. py:method:: bind_mesh(mesh) -> None Deprecated: upload, bind, and remember mesh for the next draw. .. py:method:: draw(mesh, mode) -> None Deprecated: draw the last bound mesh, or upload on demand. .. py:class:: LegacyBinding Bases: :py:obj:`GLBindingStrategy` Upload ``MeshData`` to a client-state :class:`LegacyMesh`. .. py:method:: upload(mesh: picogl.renderer.meshdata.MeshData) -> picogl.backend.geometry.mesh.GPUMesh .. py:class:: ModernBinding Bases: :py:obj:`GLBindingStrategy` Upload ``MeshData`` to a VAO-backed :class:`ModernMesh`. .. py:method:: upload(mesh: picogl.renderer.meshdata.MeshData) -> picogl.backend.geometry.mesh.GPUMesh .. py:method:: upload_gpu_object(mesh: Any) -> picogl.backend.geometry.mesh.GPUMesh Wrap an object that already has ``vao`` / ``ebo`` / ``index_count``. .. py:method:: bind_mesh(mesh) -> None Deprecated: upload, bind, and remember mesh for the next draw. .. py:class:: LegacyMesh(mesh: Any) Bases: :py:obj:`picogl.backend.geometry.mesh.GPUMesh` Client-array mesh binding from CPU ``MeshData`` or compatible objects. .. py:attribute:: mesh .. py:attribute:: _binding .. py:method:: bind() -> None Bind GPU buffers or client arrays for drawing. .. py:method:: unbind() -> None Release binding after draw (optional). .. py:method:: draw(mode: int) -> None Issue draw calls for the bound mesh. .. py:class:: GPUMesh Bases: :py:obj:`abc.ABC` Uploaded or CPU-bound geometry ready for bind + draw. .. py:method:: bind() -> None :abstractmethod: Bind GPU buffers or client arrays for drawing. .. py:method:: draw(mode: int) -> None :abstractmethod: Issue draw calls for the bound mesh. .. py:method:: unbind() -> None Release binding after draw (optional). .. py:method:: delete() -> None Release GPU resources (optional). .. py:class:: ModernMesh(*, gl_mesh: Optional[picogl.renderer.glmesh.GLMesh] = None, vao: Any = None, index_count: int = 0) Bases: :py:obj:`picogl.backend.geometry.mesh.GPUMesh` VAO-backed mesh; wraps :class:`GLMesh` or a pre-uploaded VAO object. .. py:attribute:: _gl_mesh :value: None .. py:attribute:: _vao :value: None .. py:attribute:: _index_count :value: 0 .. py:method:: bind() -> None Bind GPU buffers or client arrays for drawing. .. py:method:: unbind() -> None Release binding after draw (optional). .. py:method:: draw(mode: int) -> None Issue draw calls for the bound mesh. .. py:method:: delete() -> None Release GPU resources (optional).