Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat zawiera przykłady efektów specjalnych osiąganych z przetwarzaniem współrzędnych tekstury.
- animowanie tekstur (przez tłumaczenie lub rotację) w modelu
- Tworzenie współrzędnych tekstury jako funkcji liniowej położenia przestrzeni kamery modelu
- wykonywanie mapowania środowiska za pomocą mapy środowiska sześciennego
- Wykonywanie tekstu projektowego
Animowanie tekstur (przez tłumaczenie lub rotację) w modelu
Zdefiniuj współrzędne tekstury 2D w formacie wierzchołka.
// Use a single texture, with 2D texture coordinates. This // bit-pattern should be expanded to include position, normal, // and color information as needed. DWORD dwFVFTex = D3FVF_TEX1 | D3DFVF_TEXCOORDSIZE2(0);Skonfiguruj rasterizator do używania współrzędnych tekstury 2D.
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);Zdefiniuj i ustaw odpowiednią macierz przekształcania współrzędnych tekstury.
// M is a D3DMATRIX being set to translate texture // coordinates in the U and V directions. // 1 0 0 0 // 0 1 0 0 // du dv 1 0 (du and dv change each frame) // 0 0 0 1 D3DMATRIX M = D3DXMatrixIdentity(); // declared in d3dutil.h M._31 = du; M._32 = dv;
Tworzenie współrzędnych tekstury jako funkcji liniowej położenia kamery modelu
Użyj flagi D3DTSS_TCI_CAMERASPACEPOSITION, aby poinstruować system o przekazaniu położenia wierzchołka w przestrzeni kamery jako danych wejściowych do przekształcenia tekstury.
// The input vertices have no texture coordinates, saving // bandwidth. Three texture coordinates are generated by // using vertex position in camera space (x, y, z). SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);Poinstruuj rasterizatora, aby spodziewał się współrzędnych tekstury 2D.
// Two output coordinates are used. SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);Zdefiniuj i ustaw macierz, która stosuje funkcję liniową.
// Generate texture coordinates as linear functions // so that: // u = Ux*x + Uy*y + Uz*z + Uw // v = Vx*x + Vy*y + Vz*z + Vw // The matrix M for this case is: // Ux Vx 0 0 // Uy Vy 0 0 // Uz Vz 0 0 // Uw Vw 0 0 SetTransform(D3DTS_TEXTURE0, &M);
Mapowanie środowiska za pomocą mapy środowiska sześciennego
Użyj flagi D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR, aby poinstruować system, aby automatycznie generować współrzędne tekstury jako wektory odbicia na potrzeby mapowania sześciennego.
SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR);Poinstruuj rasterizatora, aby oczekiwał współrzędnych tekstury z trzema elementami.
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3);
Wykonywanie tekstu projektowego
Użyj flagi D3DTSS_TCI_CAMERASPACEPOSITION, aby poinstruować system o przekazaniu pozycji wierzchołka jako danych wejściowych do macierzy przekształcenia tekstury.
SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);Utwórz i zastosuj macierz projekcji tekstury. Wykracza to poza zakres tej dokumentacji i jest tematem kilku artykułów branżowych.
Poinstruuj rasterizatora, aby oczekiwał rzutowanych współrzędnych tekstury z trzema elementami.
// Two output coordinates are used. SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTF_PROJECTED | D3DTTFF_COUNT3);
Tematy pokrewne