Czy istnieją wytyczne DirectX dotyczące wiązania i odwiązywania zasobów między wywołaniami losowania?

Wszystkie książki i samouczki DirectX zdecydowanie polecamzmniejszenie alokacji zasobów pomiędzy wywołaniami do minimum - jednak nie mogę znaleźć żadnych wskazówek, które pozwolą lepiej poznać szczegóły. Przeglądając wiele przykładowego kodu znalezionego w sieci, doszedłem do wniosku, że programiści mają zupełnie inne zasady kodowania dotyczące tego tematu. Niektóre są nawet ustawione i rozbrojone

VS/PS 
VS/PS ResourceViews
RasterizerStage 
DepthStencilState
PrimitiveTopology
... 

przed i pokażdy narysuj połączenie (chociaż konfiguracja pozostaje niezmieniona), a inne nie.

Myślę, że to trochę przesadzone ...

Z moich własnych eksperymentów dowiedziałem się, że jedyne zasoby, które muszę powiązać przy każdym wywołaniu, toShaderResourceViews (doVS iPS w moim przypadku). Wymóg ten może być spowodowany użyciem shaderów obliczeniowych, ponieważ wiążę / rozłączamUAVs do buforów, które są powiązaneVS / PS później.

Straciłem wiele godzin pracy, zanim wykryłem, że to ponowne wiązanie jest konieczne. I myślę, że wielu programistów nie jest pewnych i woli odwiązać i ponownie powiązać „trochę za dużo” zamiast wpadać w podobną pułapkę.

Pytanie 1: Czy istnieją przynajmniej pewne zasady dotyczące tego problemu?

Pytanie 2: Czy to możliwe, że mójShaderResourceViews przywiązany doVS/PS są niezwiązane przez rdzeń sterownika / DirectX, ponieważ wiążęUAVs do tych samych buforów przed wywołaniem wysyłki CS (nie rozłączamSRVs siebie)?

Pytanie 3: Nawet nie ustawiamVS/PS do null przed użyciem shaderów obliczeniowych. Działa bez problemów, ale wciąż nie jestem pewien, czy wykopuję kolejną pułapkę, stosując takie „leniwe” podejście.

questionAnswers(2)

yourAnswerToTheQuestion