THREE.js,BufferGeometry,array.length / itemSize!= numItems?

时间:2013-04-03 18:19:33

标签: three.js webgl

查看示例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。

我误解了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

你不是在误解任何事情。命名法可以改进。

这样想:

itemSize = (number of components) / vertex

numItems = (number of components)
         = (number of vertices) * itemSize

numItems视为发送到GPU的阵列中的项目数。

three.js r.57