Udostępnij przez


Współrzędne tekstury generowane automatycznie (Direct3D 9)

System może używać przekształconej pozycji przestrzeni kamery lub normalnego z wierzchołka jako współrzędnych tekstury lub może obliczyć trzy wektory elementów używane do obsługi mapy środowiska sześciennego. Podobnie jak współrzędne tekstury, które jawnie określisz w wierzchołku, można użyć automatycznie wygenerowanych współrzędnych tekstury jako danych wejściowych dla przekształceń współrzędnych tekstury.

Automatycznie generowane współrzędne tekstury mogą znacznie zmniejszyć przepustowość wymaganą dla danych geometrycznych, eliminując potrzebę jawnych współrzędnych tekstury w formacie wierzchołka. W wielu przypadkach współrzędne tekstury generowane przez system mogą być używane z przekształceniami w celu uzyskania efektów specjalnych. Oczywiście jest to funkcja specjalnego przeznaczenia i będziesz używać jawnych współrzędnych tekstury do wielu okazji.

Konfigurowanie automatycznie generowanych współrzędnych tekstury

W języku C++, D3DTSS_TEXCOORDINDEX stan tekstury (z D3DTEXTURESTAGESTATETYPE wyliczonego typu) kontroluje sposób generowania współrzędnych tekstury przez system.

Zwykle ten stan nakazuje systemowi użycie określonego zestawu współrzędnych tekstury zakodowanych w formacie wierzchołka. Jeśli uwzględnisz D3DTSS_TCI_CAMERASPACENORMAL, D3DTSS_TCI_CAMERASPACEPOSITION lub flagi D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR w wartości przypisanej do tego stanu, zachowanie systemu jest zupełnie inne. Jeśli którakolwiek z tych flag jest obecna, etap tekstury ignoruje współrzędne tekstury w formacie wierzchołka na rzecz współrzędnych generowanych przez system. Znaczenie każdej flagi są wyświetlane na poniższej liście.

  • D3DTSS_TCI_CAMERASPACENORMAL

    Użyj wierzchołka normalnego, przekształconego w przestrzeń kamery jako współrzędnych tekstury wejściowej.

  • D3DTSS_TCI_CAMERASPACEPOSITION

    Użyj położenia wierzchołka przekształconego w przestrzeń kamery jako współrzędnych tekstury wejściowej.

  • D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR

    Użyj wektora odbicia przekształconego w przestrzeń aparatu jako współrzędnych tekstury wejściowej. Wektor odbicia jest obliczany z położenia wierzchołka wejściowego i wektora normalnego.

Flagi indeksu współrzędnych tekstury wzajemnie się wykluczają. W tym przykładzie użyto następujących zastosowań:

  • Położenie wierzchołka (w przestrzeni kamery) jako współrzędne tekstury wejściowej dla tego etapu tekstury
  • Tryb zawijania ustawiony w stanie renderowania D3DRENDERSTATE_WRAP1
// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface
d3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 
                                   D3DTSS_TCI_CAMERASPACEPOSITION | 1);

Współrzędne tekstury generowane automatycznie są najbardziej przydatne jako wartości wejściowe przekształcenia współrzędnych tekstury lub w celu wyeliminowania konieczności obliczenia trzech wektorów elementów dla map środowiska sześciennego.

Mapowanie sfer używa wstępnie skompilowanej (w czasie modelu) mapy tekstury, która zawiera całe środowisko w sposób odzwierciedlany przez sferę chrome. Direct3D ma funkcję generowania współrzędnych tekstury przy użyciu D3DTSS_TCI_CAMERASPACENORMAL stanu renderowania, który przyjmuje normalny wierzchołek w przestrzeni aparatu i umieszcza go przez transformację tekstury w celu generowania współrzędnych tekstury.

przetwarzanie współrzędnych tekstury

przekształcenia współrzędnych tekstury (Direct3D 9)

mapowanie środowiska sześciennego (Direct3D 9)