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
Generic OpenGL object interface with binding lifecycle. |
Module Contents
- class picogl.gpu.buffers.base.VertexBase(handle: int = None)[source]
Bases:
picogl.gpu.buffers.abstract.AbstractVertexGroupGeneric OpenGL object interface with binding lifecycle.
Provides handle + context manager; subclasses implement stack-based
bind()/unbind()(notBindable).- 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.