如何在Threejs中使用InstancedBufferGeometry

时间:2020-09-07 02:27:29

标签: javascript three.js

当我使用InstancedBufferGeometry不显示时。 (当下面的代码删除注释时,将显示多边形。) 但是,当显示多边形时,我使用BufferGeometry。

为什么下面的代码不起作用。

请教我。

const createGeometry = () => {
    // const geometry = new THREE.BufferGeometry();
    const geometry = new THREE.InstancedBufferGeometry();
    const positions = new THREE.BufferAttribute(new Float32Array(4 * 3), 3);
    const uvs = new THREE.BufferAttribute(new Float32Array(4 * 2), 2);

    positions.setXYZ(0, -0.5, 0.5, 1.0);
    positions.setXYZ(1, 0.5, 0.5, 1.0);
    positions.setXYZ(2, -0.5, -0.5, 1.0);
    positions.setXYZ(3, 0.5, -0.5, 1.0);
    uvs.setXYZ(0, 0.0, 0.0);
    uvs.setXYZ(1, 1.0, 0.0);
    uvs.setXYZ(2, 0.0, 1.0);
    uvs.setXYZ(3, 1.0, 1.0);
    geometry.setAttribute("position", positions);
    geometry.setAttribute("uv", uvs);

    geometry.setIndex(
      new THREE.BufferAttribute(new Uint16Array([0, 2, 1, 2, 3, 1]), 1)
    );

    return geometry;
  };

使用BufferGeometry时。

enter image description here

1 个答案:

答案 0 :(得分:2)

不支持使用没有至少一个InstancedBufferAttribute的{​​{1}}。

这种用法甚至没有意义,因为您希望拥有一个或多个定义每个实例的变体的属性。

相关问题