Существуют ли директивы 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 обнулить, прежде чем использовать вычислительные шейдеры. Работает без проблем, но я чувствую себя постоянно неуверенным, копаю ли я свою следующую ловушку, используя такой «ленивый» подход.

Ответы на вопрос(2)

Ваш ответ на вопрос