Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Każda tabela deskryptorów przechowuje deskryptory jednego lub więcej typów — SRV, UAV, CBV i próbniki. Tabela deskryptora nie jest alokacją pamięci; to po prostu przesunięcie względem kolejki deskryptorów oraz jej długość.
Odwoływanie się do tabel deskryptora
Potok grafiki, za pośrednictwem sygnatury głównej, uzyskuje dostęp do zasobów przez odwołanie do tabel deskryptorów według indeksu.
Tabela deskryptorów jest w rzeczywistości tylko podzakresem stosu deskryptorów. Sterty deskryptorów reprezentują podstawową alokację pamięci dla kolekcji deskryptorów. Ponieważ alokacja pamięci jest właściwością tworzenia stosu deskryptorów, zdefiniowanie tabeli deskryptorów jest tak samo tanie jak określenie regionu w stosie dla sprzętu. Tabele deskryptorów nie muszą być tworzone ani niszczone na poziomie interfejsu API — są one jedynie identyfikowane dla sterowników jako przesunięcie i rozmiar z puli przy każdym odwołaniu.
Z pewnością istnieje możliwość, aby aplikacja definiowała bardzo duże tabele deskryptorów, gdy jej shadery chcą swobody wyboru z ogromnego zestawu dostępnych deskryptorów (często odwołujących się do tekstur) w locie (być może pod wpływem danych materiałowych).
Podpis korzeniowy odnosi się do wpisu tabeli deskryptora przez odniesienie do sterty, a także do lokalizacji początkowej tabeli (jako przesunięcia od początku sterty) oraz długości tabeli (w liczbie wpisów). Na poniższym obrazku przedstawiono te pojęcia: wskaźniki tabel deskryptorów z sygnatury głównej oraz deskryptory w stercie deskryptorów, które odnoszą się do pełnej tekstury lub danych buforu w stercie (w przypadku tekstury, w domyślnej stercie).