picogl.gpu.buffers.base

Specializes the abstract façade into a slightly more concrete base (manages a gl handle, context manager behavior, common boilerplate).

Leaves rendering-specific logic to subclasses like ModernVertexArrayGroup.

Follows the “abstract base + partial implementation” pattern.

Binding model

bind() / unbind() and with self issue real gl bind/unbind on each entry and exit (stack-based). This is intentionally not sticky/idempotent.

Do not inherit from Bindable here or on VertexBufferGroup / VertexArrayObject / per-buffer VBOs — nested with scopes and sibling buffer binds require re-binding after unbind. Pass-scoped sticky binding belongs in small wrappers (e.g. ShaderPipeline, LegacyClientMeshBinding); an optional StickyVAOBinding wrapper may be added later without changing this base.

Classes

VertexBase

Generic OpenGL object interface with binding lifecycle.

Module Contents

class picogl.gpu.buffers.base.VertexBase(handle: int = None)[source]

Bases: picogl.gpu.buffers.abstract.AbstractVertexGroup

Generic OpenGL object interface with binding lifecycle.

Provides handle + context manager; subclasses implement stack-based bind() / unbind() (not Bindable).

handle = None[source]
abstract bind()[source]

Bind the underlying VAO/state for rendering.

abstract unbind()[source]

Optionally unbind the VAO/state.

abstract delete()[source]

Release resources (VAO or equivalent).

__enter__()[source]
__exit__(exc_type, exc_val, exc_tb)[source]
attach_buffers(nbo=None, cbo=None, vbo=None, ebo=None) None[source]

Attach the buffers that the VAO/group should coordinate.

set_layout(layout: picogl.gpu.buffers.attributes.LayoutDescriptor) None[source]

Define the attribute layout for this VAO/group.