Попытка нарисовать несколько объектов в WebGL. Каждый объект имеет свои данные. Я использую l oop, чтобы рисовать каждый объект за раз. И WebGL показывает только последний объект. Когда я пытаюсь нарисовать их отдельно друг от друга (нажмите один раз - первый нарисован, нажмите второй раз - затем следующий объект, нарисованный поверх первого), все в порядке. Можно ли использовать несколько вызовов отрисовки для отдельного объекта в al oop и получить одно объединенное изображение? PS: я не использую «очистить» функции внутри l oop.
. Вот некоторый код.
Структура объекта:
let someObject = {
// Program to execute
program: program,
// Vertex buffer
buffer: positionBuffer,
// Vertex attribute location
attribLocation: positionAttributeLocation,
// Data per primitive
count: positions.length / 2, // 2 values per vertex: X, Y
// Uniforms
// [{type, vareableLocation, valueToPass}, ...]
uniforms: updateObjectUniforms(program)
};
Рисование l oop -call
for (let i = 0; i < objectsToDraw.length; i++) {
drawObject(objectsToDraw[i]);
}
Я использую функцию gl.darwArrays
function drawObject(object) {
var programInfo = object.programInfo;
var bufferInfo = object.bufferInfo;
gl.useProgram(programInfo.program);
// Setup all the needed attributes
// Bind buffers
...
// Upload uniforms
...
// Draw
gl.drawArrays(gl.TRIANGLES, 0, bufferInfo.numElements);
});