WebGL: когда я пытаюсь нарисовать несколько объектов с отдельными вызовами рисования, WebGL возвращает только последний результат - PullRequest
0 голосов
/ 04 мая 2020

Попытка нарисовать несколько объектов в 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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...