Могу ли я использовать разные шейдеры для нескольких игровых объектов в одном вызове glMultiDrawElementsIndirect?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Могу ли я использовать разные шейдеры для нескольких игровых объектов в одном вызове glMultiDrawElementsIndirect?

Сообщение Anonymous »

Я разрабатываю собственный игровой движок с использованием OpenGL 4.6 и ищу способы оптимизации рендеринга нескольких игровых объектов. В настоящее время я использую glMultiDrawElementsIndirect для пакетной обработки и выполнения одного вызова отрисовки для нескольких объектов одновременно. Это хорошо работает, когда все объекты используют один и тот же шейдер, но сейчас я изучаю возможность использования разных шейдеров для каждого объекта.
В моей текущей настройке я привязываю шейдер перед выполнением вызов отрисовки, например:

Код: Выделить всё

shader.use();
// Set shader uniforms and other states
glDraw...;  // Perform the draw call
Теперь я думаю об установке шейдера в цикле обновления каждого игрового объекта, например:
Из класса GameObject:

Код: Выделить всё

void update() {
shader.use();
// Set shader uniforms and states specific to this object
}
И в основном файле:

Код: Выделить всё

std::vector gameObjects(100);
for (auto& object : gameObjects) {
object.update();  // Set individual shaders for each game object
}
glMultiDrawElementsIndirect(...);  // Issue the draw call for all objects
Я ожидал, что использование разных шейдеров в функции update() каждого игрового объекта каким-то образом позволит мне визуализировать каждый объект с помощью собственного шейдера при вызове glMultiDrawElementsIndirect. Однако я не уверен, позволяет ли OpenGL изменять шейдеры таким образом перед косвенным вызовом отрисовки.
Мой вопрос
  • Можно ли установить разные шейдеры для нескольких игровых объектов и при этом использовать glMultiDrawElementsIndirect для одного вызова отрисовки?
  • Если нет, то каковы альтернативные подходы для эффективной визуализации нескольких объектов с разными шейдерами при минимизации рисовать звонки?
Будем очень признательны за любые идеи или предложения по этой теме!

Подробнее здесь: https://stackoverflow.com/questions/790 ... ltidrawele
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»