Efeitos especiais (Direct3D 9)
Este tópico contém exemplos de efeitos especiais realizados com processamento de coordenadas de textura.
- Animando texturas (por tradução ou rotação) em um modelo
- Criando coordenadas de textura como uma função linear da posição de espaço da câmera de um modelo
- Executando o mapeamento de ambiente com um mapa de ambiente cúbico
- Executando texturização projetiva
Animando texturas (por tradução ou rotação) em um modelo
Defina coordenadas de textura 2D no formato de vértice.
// 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);
Configure o rasterizador para usar coordenadas de textura 2D.
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
Defina e defina uma matriz de transformação de coordenadas de textura apropriada.
// 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;
Criando coordenadas de textura como uma função linear da posição de espaço da câmera de um modelo
Use o sinalizador D3DTSS_TCI_CAMERASPACEPOSITION para instruir o sistema a passar a posição do vértice, no espaço da câmera, como entrada para uma transformação de textura.
// 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);
Instrua o rasterizador a esperar coordenadas de textura 2D.
// Two output coordinates are used. SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
Defina e defina uma matriz que aplica uma função linear.
// 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);
Executando o mapeamento de ambiente com um mapa de ambiente cúbico
Use o sinalizador D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR para instruir o sistema a gerar automaticamente coordenadas de textura como vetores de reflexão para mapeamento cúbico.
SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR);
Instrua o rasterizador a esperar coordenadas de textura com três elementos.
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3);
Executando texturização projetiva
Use o sinalizador D3DTSS_TCI_CAMERASPACEPOSITION para instruir o sistema a passar a posição do vértice como entrada para uma matriz de transformação de textura.
SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);
Crie e aplique a matriz de projeção de textura. Isso está além do escopo desta documentação e é o tópico de vários artigos do setor.
Instrua o rasterizador a esperar coordenadas de textura projetada de três elementos.
// Two output coordinates are used. SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTF_PROJECTED | D3DTTFF_COUNT3);
Tópicos relacionados