Разница между неизменяемыми и динамическими константными буферами в Direct3D 11: оптимизация и использование
Какая разница между неизменяемыми константными буферами и динамическими в Direct3D 11, и нужно ли для каждой модели делать динамический буфер?
Я разрабатываю 3D-приложение с использованием Direct3D 11 и столкнулся с вопросом оптимизации использования константных буферов. В частности, я хочу понять, какая разница между неизменяемыми константными буферами (D3D11_USAGE_DEFAULT) и динамическими (D3D11_USAGE_DYNAMIC), и нужно ли для каждой модели делать динамический буфер.
Контекст:
Я использую константные буферы для хранения матриц преобразования (мировой, видовой, проекционной) и других параметров, которые могут изменяться каждый кадр.
Я считаю, что изменение положения камеры также влияет на обновление буфера, особенно если включен растеризатор в режиме CULL_BACK.
Вопросы:
Разница между неизменяемыми и динамическими буферами:
Какая разница между неизменяемыми константными буферами (D3D11_USAGE_DEFAULT) и динамическими (D3D11_USAGE_DYNAMIC) с точки зрения производительности и использования?
В каких случаях лучше использовать динамические буферы, а в каких — неизменяемые?
Нужно ли для каждой модели делать динамический буфер?
Нужно ли для каждой модели в сцене делать отдельный динамический буфер, или можно использовать один общий буфер для всех моделей?
Как это влияет на производительность и организацию кода?
Изменение положения камеры и обновление буфера:
Верно ли, что изменение положения камеры также требует обновления константного буфера?
Как это влияет на выбор между динамическими и неизменяемыми буферами?
Skybox и динамические буферы:
Нужен ли динамический буфер для skybox, если он статичен и не изменяется?
Почему во многих примерах используют динамические буферы для skybox, если он не изменяется?
Текст и динамические буферы:
Как лучше поступать с текстом в контексте использования динамических буферов?
Нужно ли использовать динамические буферы для текстурных координат и других параметров текста?
Цель: Хочу оптимизировать использование константных буферов в своем приложении, чтобы обеспечить максимальную производительность и эффективность. Буду благодарен за разъяснения и примеры использования в различных сценариях.