手册
- 起步
- 进阶
- 构建工具
参考
- 动画
- 动画 / 轨道
- 音频
- 摄像机
- 常量
- 核心
- 核心 / BufferAttributes
- 附件
- 附件 / 核心
- 附件 / 曲线
- 附件 / 物体
- 几何体
- 立方缓冲几何体(BoxGeometry)
- 圆形缓冲几何体(CircleGeometry)
- 圆锥缓冲几何体(ConeGeometry)
- 圆柱缓冲几何体(CylinderGeometry)
- 十二面缓冲几何体(DodecahedronGeometry)
- 边缘几何体(EdgesGeometry)
- 挤压缓冲几何体(ExtrudeGeometry)
- 二十面缓冲几何体(IcosahedronGeometry)
- 车削缓冲几何体(LatheGeometry)
- 八面缓冲几何体(OctahedronGeometry)
- 参数化缓冲几何体(ParametricGeometry)
- 平面缓冲几何体(PlaneGeometry)
- 多面缓冲几何体(PolyhedronGeometry)
- 圆环缓冲几何体(RingGeometry)
- 形状缓冲几何体(ShapeGeometry)
- 球缓冲几何体(SphereGeometry)
- 四面缓冲几何体(TetrahedronGeometry)
- 文本缓冲几何体(TextGeometry)
- 圆环缓冲几何体(TorusGeometry)
- 圆环缓冲扭结几何体(TorusKnotGeometry)
- 管道缓冲几何体(TubeGeometry)
- 网格几何体(WireframeGeometry)
- 辅助对象
- 灯光
- 灯光 / 阴影
- 加载器
- 加载器 / 管理器
- 材质
- 基础线条材质(LineBasicMaterial)
- 虚线材质(LineDashedMaterial)
- 材质(Material)
- 基础网格材质(MeshBasicMaterial)
- 深度网格材质(MeshDepthMaterial)
- MeshDistanceMaterial
- Lambert网格材质(MeshLambertMaterial)
- MeshMatcapMaterial
- 法线网格材质(MeshNormalMaterial)
- Phong网格材质(MeshPhongMaterial)
- 物理网格材质(MeshPhysicalMaterial)
- 标准网格材质(MeshStandardMaterial)
- MeshToonMaterial
- 点材质(PointsMaterial)
- 原始着色器材质(RawShaderMaterial)
- 着色器材质(ShaderMaterial)
- 阴影材质(ShadowMaterial)
- 点精灵材质(SpriteMaterial)
- 数学库
- 数学库 / 插值
- 物体
- 渲染器
- 渲染器 / 着色器
- 渲染器 / WebXR
- 场景
- 纹理贴图
示例
- 动画
- 控制
- 几何体
- 辅助对象
- 灯光
- 加载器
- 物体
- 后期处理
- 导出器
- 数学库
- QuickHull
- 渲染器
- 实用工具
开发者参考
- 差异化支持
- WebGL 渲染器
BufferAttribute
这个类用于存储与BufferGeometry相关联的 attribute(例如顶点位置向量,面片索引,法向量,颜色值,UV坐标以及任何自定义 attribute )。 利用 BufferAttribute,可以更高效的向GPU传递数据。详情和例子见该页。
在 BufferAttribute 中,数据被存储为任意长度的矢量(通过itemSize进行定义),下列函数如无特别说明, 函数参数中的index会自动乘以矢量长度进行计算。
构造函数
BufferAttribute( array : TypedArray, itemSize : Integer, normalized : Boolean )
array -- 必须是 TypedArray. 类型,用于实例化缓存。
该队列应该包含:
itemSize * numVertices个元素,numVertices 是 BufferGeometry中的顶点数目
itemSize -- 队列中与顶点相关的数据值的大小。举例,如果 attribute 存储的是三元组(例如顶点空间坐标、法向量或颜色值)则itemSize的值应该是3。
normalized -- (可选) 指明缓存中的数据如何与GLSL代码中的数据对应。例如,如果array是 UInt16Array类型,且normalized的值是 true,则队列中的值将会从 0 - +65535 映射为 GLSL 中的 0.0f - +1.0f。 如果array是 Int16Array (有符号),则值将会从 -32767 - +32767 映射为 -1.0f - +1.0f。若 normalized 的值为 false,则数据映射不会归一化,而会直接映射为 float 值,例如,32767 将会映射为 32767.0f.
属性
.array : TypedArray
在 array 中保存着缓存中的数据。
.count : Integer
保存 array 除以 itemSize 之后的大小。
若缓存存储三元组(例如顶点位置、法向量、颜色值),则该值应等于队列中三元组的个数。
.itemSize : Integer
保存在 array 中矢量的长度。
.name : String
该 attribute 实例的别名,默认值为空字符串。
.needsUpdate : Boolean
该标志位指明当前 attribute 已经被修改过,且需要再次送入 GPU 处理。当开发者改变了该队列的值,则标志位需要设置为 true。
将标志位设为 true 同样会增加 version 的值。
.normalized : Boolean
指明缓存中数据在转化为GLSL着色器代码中数据时是否需要被归一化。详见构造函数中的说明。
.onUploadCallback : Function
attribute 数据传输到GPU后的回调函数。
.updateRange : Object
对象包含如下成员:
offset: 默认值为 0。 指明更新的起始位置。
count: 默认值为 -1,表示不指定更新范围。
该值只可以被用于更新某些矢量数据(例如,颜色相关数据)。
.usage : Usage
Defines the intended usage pattern of the data store for optimization purposes. Corresponds to the usage parameter of WebGLRenderingContext.bufferData(). Default is THREE.StaticDrawUsage.
.version : Integer
版本号,当 needsUpdate 被设置为 true 时,该值会自增。
方法
.applyMatrix3 ( m : Matrix3 ) : this
Applies matrix m to every Vector3 element of this BufferAttribute.
.applyMatrix4 ( m : Matrix4 ) : this
Applies matrix m to every Vector3 element of this BufferAttribute.
.applyNormalMatrix ( m : Matrix3 ) : this
Applies normal matrix m to every Vector3 element of this BufferAttribute.
.transformDirection ( m : Matrix4 ) : this
Applies matrix m to every Vector3 element of this BufferAttribute, interpreting the elements as a direction vectors.
.clone () : BufferAttribute
返回该 BufferAttribute 的拷贝。
.copyArray ( array ) : BufferAttribute
将参数中所给定的普通队列或 TypedArray 拷贝到 array 中。
拷贝 TypedArray 相关注意事项详见 TypedArray.set。
.copyAt ( index1 : Integer, bufferAttribute : BufferAttribute, index2 : Integer ) : this
将一个矢量从 bufferAttribute[index2] 拷贝到 array[index1] 中。
.copyColorsArray ( colors : Array ) : BufferAttribute
将一个存储 RGB 颜色值的队列拷贝到 array 中。
.copyVector2sArray ( vectors : Array ) : BufferAttribute
.copyVector3sArray ( vectors : Array ) : BufferAttribute
.copyVector4sArray ( vectors : Array ) : BufferAttribute
.getX ( index : Integer ) : Number
获取给定索引的矢量的第一维元素 (即 X 值)。
.getY ( index : Integer ) : Number
获取给定索引的矢量的第二维元素 (即 Y 值)。
.getZ ( index : Integer ) : Number
获取给定索引的矢量的第三维元素 (即 Z 值)。
.getW ( index : Integer ) : Number
获取给定索引的矢量的第四维元素 (即 W 值)。
.onUpload ( callback : Function ) : this
见 onUploadCallback 属性。
在 WebGL / Buffergeometry 中,该方在缓存数据传递给 GPU 后,用于释放内存。
.set ( value : Array, offset : Integer ) : BufferAttribute
value -- 被拷贝的 Array 或 TypedArray 类型的数据。
offset -- (可选) array 中开始拷贝的位置索引。
对 array,调用 TypedArray.set( value, offset ) 方法。
特别的, 对将 value 转为 TypedArray 的要求详见上述链接。
.setUsage ( value : Usage ) : BufferAttribute
Set usage to value.
.setX ( index : Integer, x : Float ) : BufferAttribute
设置给定索引的矢量的第一维数据(设置 X 值)。
.setY ( index : Integer, y : Float ) : BufferAttribute
设置给定索引的矢量的第二维数据(设置 Y 值)。
.setZ ( index : Integer, z : Float ) : BufferAttribute
设置给定索引的矢量的第三维数据(设置 Z 值)。
.setW ( index : Integer, w : Float ) : BufferAttribute
设置给定索引的矢量的第四维数据(设置 W 值)。
.setXY ( index : Integer, x : Float, y : Float ) : BufferAttribute
设置给定索引的矢量的第一、二维数据(设置 X 和 Y 值)。
.setXYZ ( index : Integer, x : Float, y : Float, z : Float ) : BufferAttribute
设置给定索引的矢量的第一、二、三维数据(设置 X、Y 和 Z 值)。
.setXYZW ( index : Integer, x : Float, y : Float, z : Float, w : Float ) : BufferAttribute
设置给定索引的矢量的第一、二、三、四维数据(设置 X、Y、Z 和 W 值)。
源代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论