picogl.backend.geometry

Geometry binding layer: CPU mesh data to GPU draw units.

Submodules

Classes

DrawableBufferAdapter

Wrap a DrawableBuffer as GPUMesh.

GLBindingStrategy

Upload CPU mesh data to a reusable GPUMesh.

LegacyBinding

Upload MeshData to a client-state LegacyMesh.

ModernBinding

Upload MeshData to a VAO-backed ModernMesh.

LegacyMesh

Client-array mesh binding from CPU MeshData or compatible objects.

GPUMesh

Uploaded or CPU-bound geometry ready for bind + draw.

ModernMesh

VAO-backed mesh; wraps GLMesh or a pre-uploaded VAO object.

Package Contents

class picogl.backend.geometry.DrawableBufferAdapter(buffer: Any, draw_kwargs: dict | None = None)[source]

Bases: picogl.backend.geometry.mesh.GPUMesh

Wrap a DrawableBuffer as GPUMesh.

_buffer
_draw_kwargs
bind() None[source]

Bind GPU buffers or client arrays for drawing.

unbind() None[source]

Release binding after draw (optional).

draw(mode: int) None[source]

Issue draw calls for the bound mesh.

delete() None[source]

Release GPU resources (optional).

class picogl.backend.geometry.GLBindingStrategy[source]

Bases: abc.ABC

Upload CPU mesh data to a reusable GPUMesh.

_last_gpu_mesh: picogl.backend.geometry.mesh.GPUMesh | None = None
abstract upload(mesh: picogl.renderer.meshdata.MeshData) picogl.backend.geometry.mesh.GPUMesh[source]
bind_mesh(mesh) None[source]

Deprecated: upload, bind, and remember mesh for the next draw.

draw(mesh, mode) None[source]

Deprecated: draw the last bound mesh, or upload on demand.

class picogl.backend.geometry.LegacyBinding[source]

Bases: GLBindingStrategy

Upload MeshData to a client-state LegacyMesh.

upload(mesh: picogl.renderer.meshdata.MeshData) picogl.backend.geometry.mesh.GPUMesh[source]
class picogl.backend.geometry.ModernBinding[source]

Bases: GLBindingStrategy

Upload MeshData to a VAO-backed ModernMesh.

upload(mesh: picogl.renderer.meshdata.MeshData) picogl.backend.geometry.mesh.GPUMesh[source]
upload_gpu_object(mesh: Any) picogl.backend.geometry.mesh.GPUMesh[source]

Wrap an object that already has vao / ebo / index_count.

bind_mesh(mesh) None[source]

Deprecated: upload, bind, and remember mesh for the next draw.

class picogl.backend.geometry.LegacyMesh(mesh: Any)[source]

Bases: picogl.backend.geometry.mesh.GPUMesh

Client-array mesh binding from CPU MeshData or compatible objects.

mesh
_binding
bind() None[source]

Bind GPU buffers or client arrays for drawing.

unbind() None[source]

Release binding after draw (optional).

draw(mode: int) None[source]

Issue draw calls for the bound mesh.

class picogl.backend.geometry.GPUMesh[source]

Bases: abc.ABC

Uploaded or CPU-bound geometry ready for bind + draw.

abstract bind() None[source]

Bind GPU buffers or client arrays for drawing.

abstract draw(mode: int) None[source]

Issue draw calls for the bound mesh.

unbind() None[source]

Release binding after draw (optional).

delete() None[source]

Release GPU resources (optional).

class picogl.backend.geometry.ModernMesh(*, gl_mesh: picogl.renderer.glmesh.GLMesh | None = None, vao: Any = None, index_count: int = 0)[source]

Bases: picogl.backend.geometry.mesh.GPUMesh

VAO-backed mesh; wraps GLMesh or a pre-uploaded VAO object.

_gl_mesh = None
_vao = None
_index_count = 0
bind() None[source]

Bind GPU buffers or client arrays for drawing.

unbind() None[source]

Release binding after draw (optional).

draw(mode: int) None[source]

Issue draw calls for the bound mesh.

delete() None[source]

Release GPU resources (optional).