Współrzędne tekstury (Direct3D 9)
Większość tekstur, takich jak mapy bitowe, jest dwuwymiarową tablicą wartości kolorów. Tekstury mapy środowiska sześciennego są wyjątkiem. Aby uzyskać szczegółowe informacje, zobacz mapowanie środowiska sześciennego (Direct3D 9). Poszczególne wartości kolorów są nazywane elementem tekstury lub texelem. Każdy texel ma unikatowy adres w teksturze. Adres można traktować jako kolumnę i numer wiersza, które są oznaczone etykietami i v odpowiednio na poniższej ilustracji.
Współrzędne tekstury znajdują się w przestrzeni tekstury. Oznacza to, że są one względem lokalizacji (0,0) w teksturze. Gdy tekstura jest stosowana do pierwotnego miejsca 3D, jego adresy texel muszą być mapowane na współrzędne obiektu. Następnie należy je przetłumaczyć na współrzędne ekranu lub lokalizacje pikseli.
Mapowanie texels na spację ekranu
Direct3D mapuje texels w przestrzeni tekstury bezpośrednio do pikseli w przestrzeni ekranu, pomijając pośredni krok w celu zwiększenia wydajności. Ten proces mapowania jest w rzeczywistości odwrotnym mapowaniem. Oznacza to, że dla każdego piksela w przestrzeni ekranu obliczana jest odpowiednia pozycja texel w przestrzeni tekstury. Kolor tekstury w punkcie lub wokół tego punktu jest próbkowany. Proces próbkowania jest nazywany filtrowaniem tekstur. Aby uzyskać więcej informacji, zobacz Filtrowanie tekstur (Direct3D 9).
Każdy texel w teksturze może być określony przez współrzędną texel. Jednak w celu mapowania texels na pierwotne, Direct3D wymaga jednolitego zakresu adresów dla wszystkich texels we wszystkich teksturach. W związku z tym używa ogólnego schematu adresowania, w którym wszystkie adresy texel znajdują się w zakresie od 0,0 do 1,0 włącznie. Aplikacje Direct3D określają współrzędne tekstury pod względem ciebie, wartości v, podobnie jak współrzędne kartezjańskie 2D są określane pod względem współrzędnych x,y. Technicznie system może przetwarzać współrzędne tekstury poza zakresem 0,0 i 1,0, i robi to przy użyciu parametrów ustawionych dla adresowania tekstury. Aby uzyskać więcej informacji, zobacz tryby adresowania tekstury (Direct3D 9).
Wynika to z tego, że identyczne adresy tekstur mogą mapować na różne współrzędne texel w różnych teksturach. Na poniższej ilustracji adres tekstury to (0.5,1.0). Jednak ze względu na to, że tekstury są różne rozmiary, adres tekstury mapuje się na różne texels. Tekstura 1 po lewej stronie jest 5x5. Adres tekstury (0,5,1,0) mapuje na texel (2,4). Tekstura 2 po prawej stronie jest 7x7. Adres tekstury (0,5,1,0) mapuje na texel (3,6).
Uproszczona wersja procesu mapowania texel jest pokazana na poniższej ilustracji. Wprawdzie ten przykład jest bardzo prosty. Aby uzyskać bardziej szczegółowe informacje, zobacz Bezpośrednie mapowanie texels na piksele (Direct3D 9).
W tym przykładzie piksel pokazany po lewej stronie ilustracji jest wyidealizowany do kwadratu koloru. Adresy czterech narożników piksela są mapowane na element pierwotny 3D w przestrzeni obiektu. Kształt piksela jest często zniekształcany z powodu kształtu pierwotnego w przestrzeni 3D i ze względu na kąt widzenia. Narożniki obszaru powierzchni na pierwotnych, które odpowiadają narożnikom piksela, są następnie mapowane na przestrzeń tekstury. Proces mapowania ponownie zniekształca kształt piksela, co jest powszechne. Ostateczna wartość koloru piksela jest obliczana z texels w regionie, do którego mapuje się piksel. Określasz metodę używaną przez metodę Direct3D do uzyskiwania koloru pikseli podczas ustawiania metody filtrowania tekstur. Aby uzyskać więcej informacji, zobacz Filtrowanie tekstur (Direct3D 9).
Aplikacja może przypisywać współrzędne tekstury bezpośrednio do wierzchołków. Ta funkcja zapewnia kontrolę nad tym, która część tekstury jest mapowana na element pierwotny. Załóżmy na przykład, że tworzysz prostokątny pierwotny, który jest dokładnie taki sam jak tekstura na poniższej ilustracji. W tym przykładzie aplikacja ma mapować całą teksturę na całą ścianę. Współrzędne tekstury przypisywane przez aplikację do wierzchołków pierwotnych to (0.0,0.0), (1.0,0.0), (1.0,1.0) i (0.0,1.0).
ściany mapowanej na teksturę
Jeśli zdecydujesz się zmniejszyć wysokość ściany o połowę, możesz zniekształcić teksturę, aby zmieścić się na mniejszej ścianie, lub przypisać współrzędne tekstury, które powodują, że Direct3D używa dolnej połowy tekstury.
Jeśli zdecydujesz się zniekształcić lub skalować teksturę w celu dopasowania do mniejszej ściany, użyta metoda filtrowania tekstur będzie mieć wpływ na jakość obrazu. Aby uzyskać więcej informacji, zobacz Filtrowanie tekstur (Direct3D 9).
Jeśli zamiast tego zdecydujesz się na przypisanie współrzędnych tekstury direct3D, aby użyć dolnej połowy tekstury dla mniejszej ściany, tekstura koordynuje aplikację do wierzchołków pierwotnych w tym przykładzie to (0,0,0,5), (1.0,0,5), (1.0,1.0) i (0.0,1.0). Direct3D stosuje dolną połowę tekstury do ściany.
Współrzędne tekstury wierzchołka mogą być większe niż 1,0. Po przypisaniu współrzędnych tekstury do wierzchołka, który nie mieści się w zakresie od 0,0 do 1,0 włącznie, należy również ustawić tryb adresowania tekstury. Aby uzyskać więcej informacji, zobacz tryby adresowania tekstury (Direct3D 9).
Współrzędne tekstury i etapy tekstury
Współrzędne tekstury są kojarzone z teksturami poprzez etapy tekstury. Tekstury są przypisywane do etapów tekstury za pomocą metody SetTexture(stageIndex, pTexture). Zobacz IDirect3DDevice9::SetTexture.
Kod elastycznego formatu wierzchołka (FVF) może definiować maksymalnie osiem zestawów współrzędnych tekstury. Dane współrzędnych tekstury są dostarczane przez użytkownika w danych wierzchołka. Dane są określane za pomocą indeksu opartego na zerach: 0–7. Istnieje do ośmiu etapów mieszanych tekstur. Tekstura jest skojarzona z określonym etapem przy użyciu metody SetTexture( stageIndex, pTexture).
Po wykonaniu tej czynności każdy zestaw współrzędnych tekstury może być używany przez dowolny etap. Każdy zestaw współrzędnych jest skojarzony z etapem przy użyciu metody SetTextureStageState( stageIndex, D3DTSS_TEXCOORDINDEX, textureCoordinateIndex ). Zobacz IDirect3DDevice9::SetTextureStageState. W ten sposób można skonfigurować etapy mieszania, aby używać dowolnej tekstury i współrzędnych tekstury. Więcej niż jeden etap może używać tych samych tekstur lub współrzędnych tekstur.
Dodatkowe informacje znajdują się w następujących tematach.
- formaty współrzędnych tekstury (Direct3D 9)
- przetwarzanie współrzędnych tekstury (Direct3D 9)
Tematy pokrewne