Functions for manipulating buffers and streams
float32
Float, single precision, 4 bytes
int16
Signed integer, 2 bytes
int32
Signed integer, 4 bytes
int64
Signed integer, 8 bytes
int8
Signed integer, 1 byte
uint16
Unsigned integer, 2 bytes
uint32
Unsigned integer, 4 bytes
uint64
Unsigned integer, 8 bytes
uint8
Unsigned integer, 1 byte
copies one buffer to another
Copy all data streams from one buffer to another, element wise.
Each of the source streams must have a matching stream in the destination buffer. The streams must match in both type and size. The source and destination buffer can be the same.
dst -
buffer the destination buffer
dstoffset -
number the offset to start copying data to
src -
buffer the source data buffer
srcoffset -
number the offset to start copying data from
count -
number the number of elements to copy
How to copy elements (e.g. vertices) from one buffer to another
-- copy entire buffer buffer.copy_buffer(dstbuffer, 0, srcbuffer, 0, #srcbuffer) -- copy last 10 elements to the front of another buffer buffer.copy_buffer(dstbuffer, 0, srcbuffer, #srcbuffer - 10, 10)
copies data from one stream to another
Copy a specified amount of data from one stream to another.
The value type and size must match between source and destination streams. The source and destination streams can be the same.
dst -
bufferstream the destination stream
dstoffset -
number the offset to start copying data to (measured in value type)
src -
bufferstream the source data stream
srcoffset -
number the offset to start copying data from (measured in value type)
count -
number the number of values to copy (measured in value type)
How to update a texture of a sprite:
-- copy entire stream local srcstream = buffer.get_stream(srcbuffer, hash("xyz")) local dststream = buffer.get_stream(dstbuffer, hash("xyz")) buffer.copy_stream(dststream, 0, srcstream, 0, #srcstream)
creates a new buffer
Create a new data buffer containing a specified set of streams. A data buffer can contain one or more streams with typed data. This is useful for managing compound data, for instance a vertex buffer could contain separate streams for vertex position, color, normal etc.
element_count -
number The number of elements the buffer should hold
declaration -
table A table where each entry (table) describes a stream
name
: The name of the streamtype
: The data type of the streamcount
: The number of values each element should holdHow to create and initialize a buffer
function init(self) local size = 128 self.image = buffer.create( size * size, { {name=hash("rgb"), type=buffer.VALUE_TYPE_UINT8, count=3 } }) self.imagestream = buffer.get_stream(self.image, hash("rgb")) for y=0,self.height-1 do for x=0,self.width-1 do local index = y * self.width * 3 + x * 3 + 1 self.imagestream[index + 0] = self.r self.imagestream[index + 1] = self.g self.imagestream[index + 2] = self.b end end
gets data from a stream
Get a copy of all the bytes from a specified stream as a Lua string.
buffer -
buffer the source buffer
stream_name -
hash the name of the stream
data -
string the buffer data as a Lua string
gets a stream from a buffer
Get a specified stream from a buffer.
buffer -
buffer the buffer to get the stream from
stream_name -
hash | string the stream name
stream -
bufferstream the data stream