vispy.gloo.buffer module

class vispy.gloo.buffer.Buffer(data=None, nbytes=None)[source]

Bases: vispy.gloo.globject.GLObject

Generic GPU buffer.

A generic buffer is an interface used to upload data to a GPU array buffer (ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER). It keeps track of buffer size but does not have any CPU storage. You can consider it as write-only.

The set_data is a deferred operation: you can call it even if an OpenGL context is not available. The update function is responsible to upload pending data to GPU memory and requires an active GL context.

The Buffer class only deals with data in terms of bytes; it is not aware of data type or element size.

Parameters
datandarray | None

Buffer data.

nbytesint | None

Buffer byte size.

property nbytes

Buffer size in bytes

resize_bytes(size)[source]

Resize this buffer (deferred operation).

Parameters
sizeint

New buffer size in bytes.

set_data(data, copy=False)[source]

Set data in the buffer (deferred operation).

This completely resets the size and contents of the buffer.

Parameters
datandarray

Data to be uploaded

copy: bool

Since the operation is deferred, data may change before data is actually uploaded to GPU memory. Asking explicitly for a copy will prevent this behavior.

set_subdata(data, offset=0, copy=False)[source]

Set a sub-region of the buffer (deferred operation).

Parameters
datandarray

Data to be uploaded

offset: int

Offset in buffer where to start copying data (in bytes)

copy: bool

Since the operation is deferred, data may change before data is actually uploaded to GPU memory. Asking explicitly for a copy will prevent this behavior.

class vispy.gloo.buffer.DataBuffer(data=None)[source]

Bases: vispy.gloo.buffer.Buffer

GPU data buffer that is aware of data type and elements size

Parameters
datandarray | None

Buffer data.

property dtype

Buffer dtype

property glsl_type

GLSL declaration strings required for a variable to hold this data.

property itemsize

The total number of bytes required to store the array data

property offset

Buffer offset (in bytes) relative to base

resize_bytes(size)[source]

Resize the buffer (in-place, deferred operation)

Parameters
sizeinteger

New buffer size in bytes

Notes

This clears any pending operations.

set_data(data, copy=False, **kwargs)[source]

Set data (deferred operation)

Parameters
datandarray

Data to be uploaded

copy: bool

Since the operation is deferred, data may change before data is actually uploaded to GPU memory. Asking explicitly for a copy will prevent this behavior.

**kwargsdict

Additional arguments.

set_subdata(data, offset=0, copy=False, **kwargs)[source]

Set a sub-region of the buffer (deferred operation).

Parameters
datandarray

Data to be uploaded

offset: int

Offset in buffer where to start copying data (i.e. index of starting element).

copy: bool

Since the operation is deferred, data may change before data is actually uploaded to GPU memory. Asking explicitly for a copy will prevent this behavior.

**kwargsdict

Additional keyword arguments.

property size

Number of elements in the buffer

property stride

Stride of data in memory

class vispy.gloo.buffer.DataBufferView(base, key)[source]

Bases: vispy.gloo.buffer.DataBuffer

View on a sub-region of a DataBuffer.

Parameters
baseDataBuffer

The buffer accessed by this view.

keystr, int, slice, or Ellpsis

The index into the base buffer that defines a sub-region of the buffer to view. String arguments select a single field from multi-field dtypes, and other allowed types select a subset of rows.

Notes

It is generally not necessary to instantiate this class manually; use base_buffer[key] instead.

property base

Buffer base if this buffer is a view on another buffer.

property glir

The glir queue for this object.

property id

The id of this GL object used to reference the GL object in GLIR. id’s are unique within a process.

property offset

Buffer offset (in bytes) relative to base

resize_bytes(size)[source]

Resize the buffer (in-place, deferred operation)

Parameters
sizeinteger

New buffer size in bytes

Notes

This clears any pending operations.

set_data(data, copy=False, **kwargs)[source]

Set data (deferred operation)

Parameters
datandarray

Data to be uploaded

copy: bool

Since the operation is deferred, data may change before data is actually uploaded to GPU memory. Asking explicitly for a copy will prevent this behavior.

**kwargsdict

Additional arguments.

set_subdata(data, offset=0, copy=False, **kwargs)[source]

Set a sub-region of the buffer (deferred operation).

Parameters
datandarray

Data to be uploaded

offset: int

Offset in buffer where to start copying data (i.e. index of starting element).

copy: bool

Since the operation is deferred, data may change before data is actually uploaded to GPU memory. Asking explicitly for a copy will prevent this behavior.

**kwargsdict

Additional keyword arguments.

class vispy.gloo.buffer.IndexBuffer(data=None)[source]

Bases: vispy.gloo.buffer.DataBuffer

Buffer for index data

Parameters
datandarray | None

Buffer data.

class vispy.gloo.buffer.VertexBuffer(data=None)[source]

Bases: vispy.gloo.buffer.DataBuffer

Buffer for vertex attribute data

Parameters
datandarray

Buffer data (optional)