Как сделать пакетный рендеринг? - PullRequest
1 голос
/ 04 февраля 2020

У меня 4 - 5 целей. Я рисую несколько треугольников для каждого из них.

while !window.should_close() {
    for target in targets.iter() {
        // Update uniform (target.color_value [red, blue, green, yellow] )
        // BindVertexArray
        // DrawElements
    }
}

Все работает, и мои треугольники нарисованы на экране разными цветами.

Могу ли я иметь один буфер, который я связываю один раз, и запускаю Команда рисования один раз? Что-то вроде

while !window.should_close() {
    for target in targets.iter() {
        // Update uniform (target.color_value [red, blue, green, yellow] )
    }
    // BindVertexArray
    // DrawElements
}

Я пытался, но все нарисовано желтым цветом, как я и ожидал.

Я обнаружил Как нарисовать несколько объектов с использованием однородных объектов буфера и экземпляра рендеринга? а также glMultiDrawArraysIndirect и glDrawArraysInstanced.

Я не совсем понимаю, как организовать мой код.

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете указать только одно унифицированное значение для всех вершин на один вызов отрисовки.

Вы можете предоставить дополнительный атрибут со значением цвета для каждой вершины. Это будет работать так же, как вы предоставляете атрибут координат для вершин треугольника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...