Difference between revisions of "Buffer.setarrayaccess"

From GiderosMobile
(Created page with "__NOTOC__ '''Available since:''' Gideros 2025.1<br/> '''Class:''' buffer_luau<br/> === Description === Sets the buffer array access. <syntaxhighlight lang="lua"> buffer.s...")
 
(wip)
Line 8: Line 8:
 
buffer.setarrayaccess(b,dataType,dim2,dim3)
 
buffer.setarrayaccess(b,dataType,dim2,dim3)
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
With ''setarrayaccess'' buffers can be used just like arrays. This makes accessing buffer values as an array both easier and faster.
 +
 +
''dataType'' can be s8,u8,s16,u16,s32,u32,f32 and f64 (for signed int/unsigned int/float types with their bit size).
 +
 +
width and height allow indexing a buffer with a vector. In that case the buffer index becomes z*dim3+y*dim2+x.
  
 
=== Parameters ===
 
=== Parameters ===
 
'''b''': (buffer) the buffer<br/>
 
'''b''': (buffer) the buffer<br/>
 
'''dataType''': (string) one of the following:
 
'''dataType''': (string) one of the following:
 +
*'''"s8"''': an integer number in range [-128, 127]
 
*'''"u8"''': an integer number in range [0, 255]
 
*'''"u8"''': an integer number in range [0, 255]
*'''"s8"''': an integer number in range [?]
+
*'''"s16"''': an integer number in range [-32,768, 32,767]
 
*'''"u16"''': an integer number in range [0, 65,535]
 
*'''"u16"''': an integer number in range [0, 65,535]
*'''"s16"''': an integer number in range [?]
+
*'''"s32"''': an integer number in range [-2,147,483,648, 2,147,483,647]
 
*'''"u32"''': an integer number in range [0, 4,294,967,295]
 
*'''"u32"''': an integer number in range [0, 4,294,967,295]
*'''"s32"''': an integer number in range [?]
 
 
*'''"f32"''': a single-precision floating-point number
 
*'''"f32"''': a single-precision floating-point number
 
*'''"f64"''': a double-precision floating-point number
 
*'''"f64"''': a double-precision floating-point number

Revision as of 07:04, 6 February 2025

Available since: Gideros 2025.1
Class: buffer_luau

Description

Sets the buffer array access.

buffer.setarrayaccess(b,dataType,dim2,dim3)

With setarrayaccess buffers can be used just like arrays. This makes accessing buffer values as an array both easier and faster.

dataType can be s8,u8,s16,u16,s32,u32,f32 and f64 (for signed int/unsigned int/float types with their bit size).

width and height allow indexing a buffer with a vector. In that case the buffer index becomes z*dim3+y*dim2+x.

Parameters

b: (buffer) the buffer
dataType: (string) one of the following:

  • "s8": an integer number in range [-128, 127]
  • "u8": an integer number in range [0, 255]
  • "s16": an integer number in range [-32,768, 32,767]
  • "u16": an integer number in range [0, 65,535]
  • "s32": an integer number in range [-2,147,483,648, 2,147,483,647]
  • "u32": an integer number in range [0, 4,294,967,295]
  • "f32": a single-precision floating-point number
  • "f64": a double-precision floating-point number

dim2: (number) buffer index start
dim3: (number) buffer index end

Example

local str = "Hello Gideros!"
local b = buffer.fromstring(str)
local dataType = "u8"
local dim2, dim3 = 0, 5
buffer.setarrayaccess(b, dataType, dim2, dim3)