Существуют ли директивы DirectX для привязки и отмены привязки ресурсов между вызовами отрисовки?
Все книги и учебники по DirectX настоятельно рекомендуемсокращение выделения ресурсов между вызовами отрисовки до минимума - пока я не могуне найти каких-либо руководящих принципов, которые получают больше в деталях. Изучив множество примеров кода, найденных в Интернете, я пришел к выводу, что программисты имеют совершенно разные принципы кодирования по этому вопросу. Некоторые даже установлены и не установлены
VS/PS
VS/PS ResourceViews
RasterizerStage
DepthStencilState
PrimitiveTopology
...
до и послекаждый сделать вызов (хотя настройка остается неизменной), а другие нет.
Я думаю что'немного перестарались ...
Из моих собственных экспериментов я обнаружил, что единственные ресурсы, которые я должен связывать при каждом вызове, - этоShaderResourceViews
(вVS
а такжеPS
в моем случае). Это требование может быть вызвано использованием вычислительных шейдеров, так как я связываю / снимаю привязкуUAVs
к буферам, которые связаны с /VS
PS
позже.
Я потерял много часов работы, прежде чем обнаружил, что этот переплет необходим. И я думаю, что многие кодеры неТочно так же и предпочитаю отвязать и привязатьслишком много вместо того, чтобы столкнуться с подобной ловушкой.
Вопрос 1: Существуют ли хотя бы некоторые практические правила в отношении этой проблемы?
Вопрос 2: Возможно ли, что мойShaderResourceViews
связан сVS/PS
не связаны ядром драйвера / DirectX, потому что я связываюUAVs
в те же буферы до вызова диспетчеризации CS (я неубратьSRVs
себя)?
Вопрос 3: Я нет даже установитьVS/PS
обнулить, прежде чем использовать вычислительные шейдеры. Работает без проблем, но я постоянно чувствую себя неувереннокопаю мою следующую ловушку, используя такую "ленивый» подход.