查看示例http://mrdoob.github.com/three.js/examples/webgl_buffergeometry_particles.html
设置位置缓冲区的方式如下:
var particles = 500000;
var geometry = new THREE.BufferGeometry();
geometry.attributes = {
position: {
itemSize: 3,
array: new Float32Array( particles * 3 ),
numItems: particles * 3
},
如果并非总是如此,如果T = geometry.attributes.position,那么T.array.length / T.itemSize === T.numItems?如果阵列具有L个槽的长度,并且每个项占据K个槽,则可以认为存在L / K个项。然而似乎这个例子有阵列有L项吗? L项将占用L * K个插槽:s
我也用位置来解决这个问题,并且只渲染了我的顶点的第一个1/3,因为我使用顶点数作为numItems,而itemSize = 3,使用长度为numItems * itemSize的Float32Array。
我误解了什么?
谢谢!
答案 0 :(得分:0)
你不是在误解任何事情。命名法可以改进。
这样想:
itemSize = (number of components) / vertex
numItems = (number of components)
= (number of vertices) * itemSize
将numItems
视为发送到GPU的阵列中的项目数。
three.js r.57