Разница между неизменяемыми и динамическими константными буферами в Direct3D 11: оптимизация и использование

Какая разница между неизменяемыми константными буферами и динамическими в Direct3D 11, и нужно ли для каждой модели делать динамический буфер?

Я разрабатываю 3D-приложение с использованием Direct3D 11 и столкнулся с вопросом оптимизации использования константных буферов. В частности, я хочу понять, какая разница между неизменяемыми константными буферами (D3D11_USAGE_DEFAULT) и динамическими (D3D11_USAGE_DYNAMIC), и нужно ли для каждой модели делать динамический буфер.

Контекст:

Я использую константные буферы для хранения матриц преобразования (мировой, видовой, проекционной) и других параметров, которые могут изменяться каждый кадр.

Я считаю, что изменение положения камеры также влияет на обновление буфера, особенно если включен растеризатор в режиме CULL_BACK.

Вопросы:

Разница между неизменяемыми и динамическими буферами:

Какая разница между неизменяемыми константными буферами (D3D11_USAGE_DEFAULT) и динамическими (D3D11_USAGE_DYNAMIC) с точки зрения производительности и использования?

В каких случаях лучше использовать динамические буферы, а в каких — неизменяемые?

Нужно ли для каждой модели делать динамический буфер?

Нужно ли для каждой модели в сцене делать отдельный динамический буфер, или можно использовать один общий буфер для всех моделей?

Как это влияет на производительность и организацию кода?

Изменение положения камеры и обновление буфера:

Верно ли, что изменение положения камеры также требует обновления константного буфера?

Как это влияет на выбор между динамическими и неизменяемыми буферами?

Skybox и динамические буферы:

Нужен ли динамический буфер для skybox, если он статичен и не изменяется?

Почему во многих примерах используют динамические буферы для skybox, если он не изменяется?

Текст и динамические буферы:

Как лучше поступать с текстом в контексте использования динамических буферов?

Нужно ли использовать динамические буферы для текстурных координат и других параметров текста?

Цель: Хочу оптимизировать использование константных буферов в своем приложении, чтобы обеспечить максимальную производительность и эффективность. Буду благодарен за разъяснения и примеры использования в различных сценариях.


Ответы (0 шт):