"""
Legacy Position VBO
"""
import ctypes
import numpy as np
from picogl.backend.gl.enums import GLBufferTarget, GLNumeric
from picogl.backend.gl.state.client import GLClientState
from picogl.backend.gl.wrappers import gl_enable_legacy_client_state
from picogl.backend.gl.wrappers.pointer import gl_vertex_array_pointer
from picogl.backend.legacy.core.vertex.buffer.vertex import LegacyVBO
[docs]
class LegacyPositionVBO(LegacyVBO):
"""
OpenGL buffer class specialized for storing and managing position data,
commonly used for rendering ribbons_legacy-like meshdata.
Inherits from LegacyVBO and adds behavior specific to position data,
such as setting up the vertex pointer and handling data uploads.
"""
[docs]
SUPPORTED_GL_TYPES = GLNumeric.supported_gl_types()
[docs]
def __init__(
self,
handle: int = None,
data: np.ndarray = None,
size: int = 3,
target: int = GLBufferTarget.ARRAY,
dtype: int = GLNumeric.FLOAT,
):
"""Initialize the position VBO."""
super().__init__(
handle=handle, size=size, data=data, target=target, dtype=dtype
)
if data is not None:
self.set_data(data)