Udostępnij za pośrednictwem


Zasoby (Direct3D 10)

Zasób to obszar w pamięci, do którego można uzyskać dostęp za pomocą potoku Direct3D. Aby potok mógł efektywnie uzyskiwać dostęp do pamięci, dane dostarczane do potoku (takie jak geometria wejściowa, zasoby cieniowania, tekstury itp.) muszą być przechowywane w zasobie. Istnieją dwa typy zasobów, z których pochodzą wszystkie zasoby Direct3D: bufor lub tekstura. Maksymalnie 128 zasobów może być aktywnych dla każdego etapu potoku.

Każda aplikacja zwykle tworzy wiele zasobów. Przykłady zasobów to: wierzchołków, bufor indeksu, bufor stały, tekstury i zasoby cieniowania. Istnieje kilka opcji, które określają, jak można używać zasobów. Możesz utworzyć zasoby, które są silnie typizowane lub mniej typowe; możesz kontrolować, czy zasoby mają zarówno dostęp do odczytu, jak i zapisu; Zasoby można udostępnić tylko procesorowi CPU, procesorowi GPU lub obu tym zasobom. Oczywiście, będzie szybkość a kompromis funkcji — im więcej funkcji zezwolisz na korzystanie z zasobu, tym mniejsza wydajność powinna być oczekiwana.

Ponieważ aplikacja często używa wielu tekstur, direct3D wprowadza również koncepcję tablicy tekstur w celu uproszczenia zarządzania teksturami. Tablica tekstur zawiera co najmniej jedną teksturę (wszystkie tego samego typu i wymiary), które można indeksować z poziomu aplikacji lub cieniowania. Tablice tekstur umożliwiają używanie jednego interfejsu z wieloma indeksami w celu uzyskania dostępu do wielu tekstur. Możesz utworzyć dowolną liczbę tablic tekstur, aby zarządzać różnymi typami tekstur w miarę potrzeb.

Po utworzeniu zasobów, które będą używane przez aplikację, połączysz lub powiążesz każdy zasób z etapami potoku, które będą ich używać. Jest to realizowane przez wywołanie interfejsu API powiązania, który pobiera wskaźnik do zasobu. Ponieważ więcej niż jeden etap potoku może wymagać dostępu do tego samego zasobu, direct3D 10 wprowadza koncepcję widoku zasobów. Widok identyfikuje część zasobu, do którego można uzyskać dostęp. Możesz utworzyć widoki m lub zasób i powiązać je z n etapami potoku, przy założeniu, że są zgodne z regułami powiązań dla zasobu udostępnionego (środowisko uruchomieniowe wygeneruje błędy w czasie kompilacji, jeśli nie).

Widok zasobów zapewnia ogólny model dostępu do zasobu (tekstury, itp.). Ponieważ można użyć widoku, aby poinformować środowisko uruchomieniowe o tym, do jakich danych ma uzyskać dostęp i jak uzyskać do niego dostęp, widoki zasobów umożliwiają tworzenie mniej zasobów. Oznacza to, że można utworzyć zasoby dla danego rozmiaru w czasie kompilacji, a następnie zadeklarować typ danych w zasobie, gdy zasób zostanie powiązany z potokiem. Widoki uwidaczniają wiele nowych możliwości korzystania z zasobów, takich jak możliwość odczytywania powierzchni głębi/wzornika w cieniowaniu, generowania dynamicznych map modułów w jednym przekazaniu i renderowania jednocześnie do wielu wycinków woluminu.

Aby dowiedzieć się więcej o podstawowych typach zasobów, tablicach tekstur i sposobach tworzenia i używania zasobów, zobacz następujące inne tematy:

Przewodnik programowania dla Direct3D 10