Formaty współrzędnych tekstury (Direct3D 9)
Współrzędne tekstury w direct3D mogą zawierać jeden, dwa, trzy lub cztery elementy zmiennoprzecinkowe, aby rozwiązać tekstury o różnych poziomach wymiaru. Tekstura 1D - powierzchnia tekstury o wymiarach 1-by-n texels - jest skierowana przez jedną współrzędną tekstury. Najbardziej typowym przypadkiem, tekstury 2D, są adresowane z dwoma współrzędnymi tekstury często nazywanymi ty i v. Direct3D obsługuje dwa typy tekstur 3D, mapy środowiska sześciennego i tekstury objętości. Mapy środowiska sześciennego nie są naprawdę 3D, ale są one adresowane za pomocą wektora 3-elementowego. Aby uzyskać szczegółowe informacje, zobacz mapowanie środowiska sześciennego (Direct3D 9).
Zgodnie z opisem w stałe kody FVF funkcji (Direct3D 9), aplikacje kodują współrzędne tekstury w formacie wierzchołka. Format wierzchołka może zawierać wiele zestawów współrzędnych tekstury. Użyj D3DFVF_TEX0 przez D3DFVF_TEX8 D3DFVF, aby opisać format wierzchołka, który nie zawiera współrzędnych tekstury lub aż osiem zestawów.
Każdy zestaw współrzędnych tekstury może zawierać od jednego do czterech elementów. Flagi D3DFVF_TEXTUREFORMAT1 przez D3DFVF_TEXTUREFORMAT4 opisują liczbę elementów we współrzędnych tekstury w zestawie, ale te flagi nie są używane samodzielnie. Zamiast tego D3DFVF_TEXCOORDSIZEN zestaw makr używa tych flag do tworzenia wzorców bitów opisujących liczbę elementów używanych przez określony zestaw współrzędnych tekstury w formacie wierzchołka. Te makra akceptują pojedynczy parametr, który identyfikuje indeks zestawu współrzędnych, którego liczba elementów jest definiowana. Poniższy przykład ilustruje sposób użycia tych makr.
// This vertex format contains two sets of texture coordinates.
// The first set (index 0) has 2 elements, and the second set
// has 1 element. The description for this vertex format would be:
// dwFVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX2 |
// D3DFVF_TEXCOORDSIZE2(0) | D3DFVF_TEXCOORDSIZE1(1);
//
typedef struct CVF
{
D3DVECTOR position;
D3DVECTOR normal;
D3DCOLOR diffuse;
float u, v; // 1st set, 2D
float t; // 2nd set, 1D
} CustomVertexFormat;
Nuta
Z wyjątkiem map środowiska sześciennego i tekstur objętościowych rasteryzatory nie mogą rozwiązywać tekstur przy użyciu więcej niż dwóch elementów. Aplikacje mogą dostarczać do trzech elementów współrzędnych tekstury, ale tylko wtedy, gdy tekstura jest mapą sześcianu, teksturą objętościową lub flagą przekształcania tekstury D3DTTFF_PROJECTED jest używana. Flaga D3DTTFF_PROJECTED powoduje, że rasterizator dzieli dwa pierwsze elementy przez trzeci element (lub n). Aby uzyskać więcej informacji, zobacz przekształcenia współrzędnych tekstury (Direct3D 9).
Tematy pokrewne