当我使用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时。
答案 0 :(得分:2)
不支持使用没有至少一个InstancedBufferAttribute
的{{1}}。
这种用法甚至没有意义,因为您希望拥有一个或多个定义每个实例的变体的属性。