0

看看例子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 个 slot,并且每个 item 占用 K 个 slot,那么有 L/K 个 item 是理所当然的。然而,这个例子似乎满足了数组有 L 个项目?L 个项目将占用 L * K 个插槽:s

我也遇到了位置问题,并且只有前 1/3 的顶点被渲染,因为我使用顶点数作为 numItems,并且 itemSize = 3,长度为 numItems * itemSize 的 Float32Array。

我有什么误解?

谢谢!

4

1 回答 1

0

你没有误解任何东西。命名法可以改进。

这样想:

itemSize = (number of components) / vertex

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

将数组numItems中的项目数视为发送到 GPU 的数量。

三.js r.57

于 2013-04-03T19:58:52.123 回答