Class: Buffer
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:85
A wrapper for a WebGPU/WebGL Buffer. In PixiJS, the Buffer class is used to manage the data that is sent to the GPU rendering pipeline. It abstracts away the underlying GPU buffer and provides an interface for uploading typed arrays or other data to the GPU, They are used in the following places: .1. Geometry as attribute data or index data for geometry .2. UniformGroup as an underlying buffer for uniform data .3. BufferResource as an underlying part of a buffer used directly by the GPU program
It is important to note that you must provide a usage type when creating a buffer. This is because
the underlying GPU buffer needs to know how it will be used. For example, if you are creating a buffer
to hold vertex data, you would use BufferUsage.VERTEX. This will tell the GPU that this buffer will be
used as a vertex buffer. This is important because it will affect how you can use the buffer.
Buffers are updated by calling the Buffer.update method. This immediately updates the buffer on the GPU. Be mindful of calling this more often than you need to. It is recommended to update buffers only when needed.
In WebGPU, a GPU buffer cannot resized. This limitation is abstracted away, but know that resizing a buffer means creating a brand new one and destroying the old, so it is best to limit this if possible.
Example
const buffer = new Buffer({
data: new Float32Array([1, 2, 3, 4]),
usage: BufferUsage.VERTEX,
});
Advanced
Extends
EventEmitter<{change:BindResource;destroy:Buffer;unload:Buffer;update:Buffer; }>
Implements
Constructors
Constructor
> new Buffer(options): Buffer
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:159
Creates a new Buffer with the given options
Parameters
options
the options for the buffer
Returns
Buffer
Overrides
Properties
_gcData?
> optional _gcData?: GCData
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:108
Internal
Implementation of
_gcLastUsed
> _gcLastUsed: number
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:110
Internal
Implementation of
_gpuData
> _gpuData: Record<number, GlBuffer | GpuBufferData>
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:106
Internal
Implementation of
_resourceId
> _resourceId: number
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:124
Internal
the resource id used internally by the renderer to build bind group keys
Implementation of
BindResource._resourceId
_resourceType
> readonly _resourceType: "buffer" = "buffer"
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:119
Internal
a resource type, used to identify how to handle it when its in a bind group / shader resource
Implementation of
BindResource._resourceType
_touched
> _touched: number
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:129
Internal
used internally to know if a uniform group was used in the last render pass
Implementation of
_updateID
> _updateID: number
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:136
Internal
_updateSize
> _updateSize: number
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:138
Internal
autoGarbageCollect
> autoGarbageCollect: boolean
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:112
If set to true, the buffer will be garbage collected automatically when it is not used.
Implementation of
descriptor
> readonly descriptor: BufferDescriptor
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:134
Internal
a description of the buffer and how it should be set up on the GPU
destroyed
> readonly destroyed: boolean
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:154
Has the buffer been destroyed?
Implementation of
BindResource.destroyed
shrinkToFit
> shrinkToFit: boolean
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:149
should the GPU buffer be shrunk when the data becomes smaller? changing this will cause the buffer to be destroyed and a new one created on the GPU this can be expensive, especially if the buffer is already big enough! setting this to false will prevent the buffer from being shrunk. This will yield better performance if you are constantly setting data that is changing size often.
Default
true
uid
> readonly uid: number
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:114
a unique id for this uniform group used through the renderer
prefixed
> static prefixed: string | boolean
Defined in: node_modules/eventemitter3/index.d.ts:9
Inherited from
Accessors
data
Get Signature
> get data(): TypedArray
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:161
the data in the buffer
Returns
Set Signature
> set data(value): void
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:162
Parameters
value
Returns
void
dataInt32
Get Signature
> get dataInt32(): Int32Array<ArrayBufferLike>
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:163
Returns
Int32Array<ArrayBufferLike>
static
Get Signature
> get static(): boolean
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:165
whether the buffer is static or not
Returns
boolean
Set Signature
> set static(value): void
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:166
Parameters
value
boolean
Returns
void
Methods
addListener()
> addListener<T>(event, fn, context?): this
Defined in: node_modules/eventemitter3/index.d.ts:45
Type Parameters
T
T extends "update" | "change" | "destroy" | "unload"
Parameters
event
T
fn
(...args) => void
context?
any
Returns
this
Inherited from
EventEmitter.addListener
destroy()
> destroy(): void
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:185
Destroys the buffer
Returns
void
emit()
> emit<T>(event, ...args): boolean
Defined in: node_modules/eventemitter3/index.d.ts:32
Calls each of the listeners registered for a given event.
Type Parameters
T
T extends "update" | "change" | "destroy" | "unload"
Parameters
event
T
args
...ArgumentMap<{ change: BindResource; destroy: Buffer; unload: Buffer; update: Buffer; }>[Extract<T, "update" | "change" | "destroy" | "unload">]
Returns
boolean
Inherited from
EventEmitter.emit
eventNames()
> eventNames(): ("update" | "change" | "destroy" | "unload")[]
Defined in: node_modules/eventemitter3/index.d.ts:15
Return an array listing the events for which the emitter has registered listeners.
Returns
("update" | "change" | "destroy" | "unload")[]
Inherited from
EventEmitter.eventNames
listenerCount()
> listenerCount(event): number
Defined in: node_modules/eventemitter3/index.d.ts:27
Return the number of listeners listening to a given event.
Parameters
event
"update" | "change" | "destroy" | "unload"
Returns
number
Inherited from
EventEmitter.listenerCount
listeners()
> listeners<T>(event): (...args) => void[]
Defined in: node_modules/eventemitter3/index.d.ts:20
Return the listeners registered for a given event.
Type Parameters
T
T extends "update" | "change" | "destroy" | "unload"
Parameters
event
T
Returns
(...args) => void[]
Inherited from
EventEmitter.listeners
off()
> off<T>(event, fn?, context?, once?): this
Defined in: node_modules/eventemitter3/index.d.ts:69
todo
Type Parameters
T
T extends "update" | "change" | "destroy" | "unload"
Parameters
event
T
fn?
(...args) => void
context?
any
once?
boolean
Returns
this
Implementation of
Inherited from
EventEmitter.off
on()
> on<T>(event, fn, context?): this
Defined in: node_modules/eventemitter3/index.d.ts:40
Add a listener for a given event.
Type Parameters
T
T extends "update" | "change" | "destroy" | "unload"
Parameters
event
T
fn
(...args) => void
context?
any
Returns
this
Implementation of
Inherited from
EventEmitter.on
once()
> once<T>(event, fn, context?): this
Defined in: node_modules/eventemitter3/index.d.ts:54
Add a one-time listener for a given event.
Type Parameters
T
T extends "update" | "change" | "destroy" | "unload"
Parameters
event
T
fn
(...args) => void
context?
any
Returns
this
Inherited from
EventEmitter.once
removeAllListeners()
> removeAllListeners(event?): this
Defined in: node_modules/eventemitter3/index.d.ts:79
Remove all listeners, or those of the specified event.
Parameters
event?
"update" | "change" | "destroy" | "unload"
Returns
this
Inherited from
EventEmitter.removeAllListeners
removeListener()
> removeListener<T>(event, fn?, context?, once?): this
Defined in: node_modules/eventemitter3/index.d.ts:63
Remove the listeners of a given event.
Type Parameters
T
T extends "update" | "change" | "destroy" | "unload"
Parameters
event
T
fn?
(...args) => void
context?
any
once?
boolean
Returns
this
Inherited from
EventEmitter.removeListener
setDataWithSize()
> setDataWithSize(value, size, syncGPU): void
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:174
Sets the data in the buffer to the given value. This will immediately update the buffer on the GPU. If you only want to update a subset of the buffer, you can pass in the size of the data.
Parameters
value
the data to set
size
number
the size of the data in bytes
syncGPU
boolean
should the buffer be updated on the GPU immediately?
Returns
void
unload()
> unload(): void
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:183
Unloads the buffer from the GPU
Returns
void
Implementation of
update()
> update(sizeInBytes?): void
Defined in: node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.d.ts:181
updates the buffer on the GPU to reflect the data in the buffer. By default it will update the entire buffer. If you only want to update a subset of the buffer, you can pass in the size of the buffer to update.
Parameters
sizeInBytes?
number
the new size of the buffer in bytes
Returns
void