Этот код работает отлично:Three.js CircleBufferGeometry не работает с несколькими элементами
circlesGeometry = new THREE.CircleBufferGeometry(10, 32);
var material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
var mesh = new THREE.Mesh(circlesGeometry, material);
scene.add(mesh);
Затем я пытаюсь добавить позицию:
circlesGeometry = new THREE.CircleBufferGeometry(10, 32);
circlesGeometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array([0, 0, 0]), 3));
var material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
var mesh = new THREE.Mesh(circlesGeometry, material);
scene.add(mesh);
У меня есть ошибка:
[.Offscreen-For-WebGL-0x7f9abda5ea00]GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 0
Что неправильно?
Я использую этот пример. https://threejs.org/docs/#Reference/Core/BufferGeometry Для строк и BufferGeometry этот пример отлично работает. – Gabriel
[это] (https://threejs.org/examples/webgl_buffergeometry_lines) один? Вначале была создана 'THREE.BufferGeometry()', которая содержит пустой атрибут 'attribute', а затем заполняется свойствами' position' и 'color', значения которых для' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. Но когда вы создаете 'THREE.CircleBufferGeometr (10, 32)', у вас уже есть атрибут 'position'. – prisoner849
[jsfiddle] (https://jsfiddle.net/prisoner849/q5t19kyt/) просто сравнивает объекты в журнале консоли браузера. Обратите внимание на атрибут 'index' в обеих геометриях. – prisoner849