BufferAttribute 缓存属性

存储与 BufferGeometry 相关属性的数据,例如顶点位置,面索引,法线,颜色, UV和任何自定义属性, 从而可以更有效地将数据传递到GPU. 数据存储为任何长度的向量(由itemSize定义), 如果传入索引,则自动乘以向量长度。构造函数中的 array 可以为以下这些类型: Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array

而如果只是使用一般的数组 Array,则在 geometry.addAttribute() 中要用到 BufferAttribute 的子类: Int8BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Int16BufferAttribute, Uint16BufferAttribute, Int32BufferAttribute, Uint32BufferAttribute, Float32BufferAttribute, Float64BufferAttribute。目的也是为了要使用二进制数据。

function BufferAttribute( array, itemSize, normalized ) { } var numPoints = 5; var positions = new Float32Array( numPoints * 3 ); geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );

Constructor

array : TypedArray

Description : 存储在缓冲区中的保存数据的数组。可以有这些类型 Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array

itemSize : Integer

Description : 存储在数组中的向量的长度。如果此属性存储3分量向量(位置,法线,颜色),则itemSize应为3。

normalized : Boolean

Description : 指示缓冲区中的基础数据如何映射到GLSL着色器代码中的值. 仅适用于整数数据. 如果array是UInt16Array的实例, 并且normalized为true,则数组数据中的值0 ~ +65535将映射到GLSL属性中的0.0f ~ + 1.0f。 Int16Array(已签名)将从-32767 ~ +32767映射到-1.0f ~ +1.0f. 如果normalized为false,则值将被修改为未修改的浮点数, 即32767变为32767.0f。

Attributes

name : String

Default value : ''
Description : 名称。

isBufferAttribute : Boolean

Default value : true(只读)
Description : 是否为BufferAttribute。

count : Integer

Default value : 0
Description : 数组的长度除以itemSize。如果缓冲区存储3分量矢量(位置,法线,颜色),则这将计算存储的此类矢量的数量。

dynamic : Boolean

Default value : false
Description : 缓冲区是否是动态的. 默认值为false。 如果false,则通知GPU,可能经常使用缓冲区的内容而不经常更改. 这对应于gl.STATIC_DRAW标志。 如果true,则通知GPU, 可能经常使用缓冲区的内容并经常更改. 这对应于gl.DYNAMIC_DRAW标志。

needsUpdate : Boolean

Default value :
Description : 用来指示此属性已更改, 且应重新发送到GPU的标志. 修改数组的值时,将其设置为true。

updateRange : Object

Default value : { offset: 0, count: -1 }
Description : offset:开始更新的位置; count:默认值为-1,表示不使用更新范围。这可以仅用于更新存储矢量的某些组件, 例如仅与颜色相关的组件。

version : Integer

Default value : 0
Description : 每次needsUpdate设置为true时递增。

Methods

clone( ) : this

复制自身.

copy( bufferAttribute ) : this
bufferAttribute BufferAttribute 源缓存属性

把源缓存属性复制一份.

copyArray( array ) : this
array normal array / TypedArray 普通数组或TypedArray

将给出的数组复制到array中.

copyAt ( index1, bufferAttribute, index2 ) : null
index1 Integer array中的索引
index2 BufferAttribute 缓存属性
index2 Integer bufferAttribute中的索引

将bufferAttribute[index2]中的向量复制到array[index1]中。

copyColorsArray( colors ) : this
colors Array 颜色数组

将表示RGB颜色值的数组复制到array中.

copyVector2sArray( vectors ) : this
vectors Array Vector2数组

将表示Vector2的数组复制到array中.

copyVector3sArray( vectors ) : this
vectors Array Vector3数组

将表示Vector3的数组复制到array中.

copyVector4sArray( vectors ) : this
vectors Array Vector4数组

将表示Vector4的数组复制到array中.

getX( index ) : Number
index Integer 索引

返回给定索引处向量的x分量。

getY( index ) : Number
index Integer 索引

返回给定索引处向量的y分量。

getZ( index ) : Number
index Integer 索引

返回给定索引处向量的z分量。

getW( index ) : Number
index Integer 索引

返回给定索引处向量的w分量。

onUpload( callback ) : null
callback Function 回调函数

设置onUploadCallback属性的值。在WebGL/Buffergeometry中,这用于在缓存传输到GPU后释放的内存。

set( value, offset ) : this
value Array / TypedArray 数组
offset Integer 从开始处的索引

在array上调用TypedArray.set( value, offset ).

setArray( array ) : this
array TypedArray 数组

设置array,needsUpdate设置为true。

setDynamic( value ) : this
value Boolean 是否动态

设置dynamic。

setX( index, x ) : this
index Integer 索引
x Float x分量

在给定索引处设置向量的x分量。

setX( index, x ) : this
index Integer 索引
x Float x分量

在给定索引处设置向量的x分量。

setY( index, y ) : this
index Integer 索引
y Float y分量

在给定索引处设置向量的y分量。

setZ( index, z ) : this
index Integer 索引
z Float z分量

在给定索引处设置向量的z分量。

setW( index, w ) : this
index Integer 索引
w Float w分量

在给定索引处设置向量的w分量。

setXY( index, x, y ) : this
index Integer 索引
x Float x分量
y Float y分量

在给定索引处设置向量的x, y分量。

setXYZ( index, x, y, z ) : this
index Integer 索引
x Float x分量
y Float y分量
z Float z分量

在给定索引处设置向量的x, y, z分量。

setXYZW( index, x, y, z ) : this
index Integer 索引
x Float x分量
y Float y分量
z Float z分量
w Float w分量

在给定索引处设置向量的x, y, z, w分量。