向BufferGeometry添加索引无效

Adding indices to a BufferGeometry does not work?

本文关键字:无效 索引 添加 BufferGeometry      更新时间:2023-09-26

我一直在尝试使用THREE.BufferGeometry()绘制一个非常基本的矩形

var geometry = new THREE.BufferGeometry();
var material = new THREE.MeshBasicMaterial({color: 'rgb(255, 0, 0)'});

var verticesArray = [20, 0, 0, 0, 20, 0, -20, 0, 0, 0, -20, 0];
var vertices = new Float32Array(verticesArray, 0, 12);
var indicesArray = [0, 1, 2, 0, 2, 3];
var indices = new Uint16Array(indicesArray, 0, 6);
geometry.addAttribute('position', new THREE.BufferAttribute(vertices, 3));
//geometry.addAttribute('index', new THREE.BufferAttribute(indices, 3));
geometry.setIndex(new THREE.BufferAttribute(indices, 3));

var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

不幸的是,它不起作用。它也没有抛出任何异常。据我所知,我做的每件事都是对的。我有四个顶点,我已经描述了两组逆时针顺序的索引。

有人能告诉我这里出了什么问题吗?

它应该是geometry.setIndex(new THREE.BufferAttribute(indices, 1));