picogl.gpu.buffers.base ======================= .. py:module:: picogl.gpu.buffers.base .. autoapi-nested-parse:: VertexBase ================ 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 :class:`~picogl.renderer.initializable.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 ------- .. autoapisummary:: picogl.gpu.buffers.base.VertexBase Module Contents --------------- .. py:class:: VertexBase(handle: int = None) Bases: :py:obj:`picogl.gpu.buffers.abstract.AbstractVertexGroup` Generic OpenGL object interface with binding lifecycle. Provides handle + context manager; subclasses implement stack-based ``bind()`` / ``unbind()`` (not :class:`~picogl.renderer.initializable.Bindable`). .. py:attribute:: handle :value: None .. py:method:: bind() :abstractmethod: Bind the underlying VAO/state for rendering. .. py:method:: unbind() :abstractmethod: Optionally unbind the VAO/state. .. py:method:: delete() :abstractmethod: Release resources (VAO or equivalent). .. py:method:: __enter__() .. py:method:: __exit__(exc_type, exc_val, exc_tb) .. py:method:: attach_buffers(nbo=None, cbo=None, vbo=None, ebo=None) -> None Attach the buffers that the VAO/group should coordinate. .. py:method:: set_layout(layout: picogl.gpu.buffers.attributes.LayoutDescriptor) -> None Define the attribute layout for this VAO/group.