Udostępnij za pośrednictwem


Mieszanie tekstur (Direct3D 9)

Direct3D może mieszać aż osiem tekstur na prymitywach w jednym przejściu. Zastosowanie wielu mieszanek tekstur może znacznie zwiększyć szybkość klatek aplikacji Direct3D. Aplikacja stosuje technikę mieszania wielu tekstur, aby w jednym przebiegu nałożyć tekstury, cienie, oświetlenie refleksyjne, oświetlenie rozproszone i inne efekty specjalne.

Aby używać mieszania tekstur, aplikacja powinna najpierw sprawdzić, czy sprzęt użytkownika go obsługuje. Te informacje znajdują się w składowej TextureCaps struktury D3DCAPS9. Aby uzyskać szczegółowe informacje na temat wykonywania zapytań dotyczących sprzętu użytkownika pod kątem możliwości łączenia tekstur, zobacz IDirect3DDevice9::GetDeviceCaps.

Etapy przetwarzania tekstur i kaskada łączenia tekstur

Funkcja Direct3D obsługuje łączenie wielu tekstur w pojedynczym przebiegu poprzez zastosowanie etapów teksturowania. Etap tekstury przyjmuje dwa argumenty i wykonuje na nich operację mieszaną, przekazując wynik do dalszego przetwarzania lub rasteryzacji. Możesz zwizualizować etap tekstury, jak pokazano na poniższym diagramie.

diagram etapu tekstury

Jak pokazano na powyższym diagramie, etapy tekstury mieszają dwa argumenty przy użyciu określonego operatora. Typowe operacje obejmują prostą modulację lub dodanie kolorów lub składników alfa argumentów, ale obsługiwane są ponad dwa tuziny operacji. Argumenty dla poziomu mogą być powiązaną teksturą, iterowanym kolorem lub wartością alfa (iterowanym podczas cieniowania Gouraud), dowolnym kolorem i wartością alfa lub wynikiem poprzedniego poziomu tekstury. Aby uzyskać więcej informacji, zobacz operacje i argumenty mieszania tekstur (Direct3D 9).

Notatka

Funkcja Direct3D odróżnia mieszanie kolorów od mieszania alfa. Aplikacje ustawiają operacje łączenia i argumenty dla kolorów i alfa indywidualnie, a wyniki tych ustawień są niezależne od siebie.

 

Kombinacja argumentów i operacji używanych przez wiele etapów mieszania definiuje prosty język mieszany oparty na przepływie. Wyniki z jednego etapu przepływają do innego etapu, od tego etapu do następnego itd. Koncepcja wyników przepływających od etapu do etapu, aby ostatecznie zostać zrastryzowana na wielokącie, jest często nazywana kaskadą łączenia tekstur. Na poniższym schemacie pokazano, jak poszczególne etapy teksturowania tworzą kaskadę mieszania tekstur.

diagram etapów mieszania tekstur w kaskadzie mieszania

Każdy etap na urządzeniu ma indeks oparty na zerach. Funkcja Direct3D umożliwia maksymalnie osiem etapów mieszanych, chociaż zawsze należy sprawdzić możliwości urządzenia, aby określić, ile etapów obsługuje bieżący sprzęt. Pierwszy etap mieszania znajduje się na indeksie 0, drugi na indeksie 1, i tak dalej, aż do indeksu 7. System łączy etapy w kolejności rosnącej indeksu.

Użyj tylko wymaganej liczby etapów; nieużywane etapy mieszania są domyślnie wyłączone. Dlatego jeśli aplikacja używa tylko dwóch pierwszych etapów, musi tylko ustawić operacje i argumenty dla etapu 0 i 1. System łączy dwa etapy i ignoruje wyłączone etapy.

Uwaga

Jeśli aplikacja różni się liczbą etapów używanych w różnych sytuacjach — takich jak cztery etapy dla niektórych obiektów i tylko dwa dla innych — nie musisz jawnie wyłączać wszystkich poprzednio używanych etapów. Jedną z opcji jest wyłączenie operacji koloru dla pierwszego nieużywanego etapu, a następnie nie zostaną zastosowane wszystkie etapy z wyższym indeksem. Inną opcją jest całkowite wyłączenie mapowania tekstur przez ustawienie operacji koloru dla pierwszego etapu tekstury (etap 0) na D3DTOP_DISABLE. Trzecia opcja to sytuacja, gdy etap tekstury ma D3DTSS_COLORARG1 równe D3DTA_TEXTURE, a wskaźnik tekstury dla tego etapu jest NULL, wtedy ten etap i wszystkie kolejne etapy nie są przetwarzane.

 

Dodatkowe informacje znajdują się w następujących tematach.

tekstury Direct3D