Compartilhar via


Texture Coordinate Transformations

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Dispositivos Mobile ® Direct3D Microsoft ® podem transformar as coordenadas de textura para vértices aplicando uma matriz × 4 4. O sistema aplica as transformações para coordenadas de textura da mesma maneira como geometria e quaisquer transformações que podem ser comunicadas em uma matriz × 4 4 — escalas, rotações, conversões, projeções, jardim ou qualquer combinação desses elementos — podem ser aplicadas.

Observação

Mobile Direct3D não modifica os vértices transformados e acesa.Como resultado, um aplicativo usando transformados e vértices acesa Não é possível usar Mobile Direct3D Para transformar as coordenadas de textura de vértices.

Dispositivos que operações de iluminação (dispositivo TnLHAL) e transformação hardware-Accelerated suporte Accelerate também a transformação de coordenadas de textura. Quando a aceleração hardware de transformações não estiver disponível, otimizações específico da plataforma na aplicar Pipeline de geometria Direct3D Mobile para coordenar de textura transformações.

Textura coordenar as transformações são úteis para produzir efeitos especiais ao evitando a necessidade de modificar diretamente as coordenadas de textura de sua geometria. Você pode usar as matrizes simples a conversão ou rotação para animar Textures em um objeto, ou você pode transformar textura coordenadas que são automaticamente gerados por Direct3D Mobile para simplificar e talvez Accelerate avançado efeitos, como texturas projetadas e dinâmico luz-mapeamento. Além disso, você pode usar coordenar de textura transformações para reutilizar um conjunto único de Texturizar coordenadas para múltiplo finalidades, em múltiplo Texturizar estágios.

Configurando e recuperando textura Coordinate transformações

Como as matrizes que seu aplicativo usa para geometria, você definir e recuperar Texturizar coordenar as transformações, chamado de IDirect3DMobileDevice::SetTransform e IDirect3DMobileDevice::GetTransform Métodos. Esses aceitar métodos de D3DTS_TEXTURE0 por membros D3DTS_TEXTURE3 das D3DMTRANSFORMSTATETYPE tipo enumerado identificar as matrizes transformação de textura testa 3 até 0, respectivamente.

Ativando transformações coordenar a textura

O estado do estágio de textura D3DMTSS_TEXTURETRANSFORMFLAGS controla o aplicativo de textura coordenar as transformações. Valores para esse estado do estágio de textura são definidos pelo D3DMTEXTURETRANSFORMFLAGS tipo enumerado.

Textura coordenar as transformações são desativadas quando D3DMTSS_TEXTURETRANSFORMFLAGS for definido como D3DTTFF_DISABLE (o valor usar como padrão). Supondo que coordenar de textura transformações foram habilitado para estágio 0, a seguinte desativa exemplo de código-los.

// For this example, the d3dmDevice variable contains a 
// valid pointer to an IDirect3DMobileDevice interface.

d3dmDevice->SetTextureStageState( 0, D3DMTSS_TEXTURETRANSFORMFLAGS,
D3DMTTFF_DISABLE );

Os outros valores definidos na D3DMTEXTURETRANSFORMFLAGS São usados para habilitar textura coordenar as transformações e ao controle quantos coordenar de textura resultante elementos são passados para o conversor de bitmap. De exemplo, levar o seguinte codificar.

// For this example, the d3dmDevice variable contains a 
// valid pointer to an IDirect3DMobileDevice interface.

d3dmDevice->SetTextureStageState( 0, D3DMTSS_TEXTURETRANSFORMFLAGS,
D3DMTTFF_COUNT2 );

O valor D3DMTTFF_COUNT2 instrui o sistema para aplicar a matriz transformação definida para estágio de textura 0 e, em seguida, transmitir os dois primeiros elementos de coordenadas de textura modificado para o conversor de bitmap.

O sinalizador transformação de textura D3DMTTFF_PROJECTED indica coordenadas para uma textura projetada. Quando esse sinalizador for especificado, o conversor de bitmap divide os elementos passados-, o último elemento. Fazer o seguinte codificar, de exemplo.

// For this example, the d3dmDevice variable contains a 
// valid pointer to an IDirect3DMobileDevice interface.

d3dmDevice->SetTextureStageState( 0, D3DMTSS_TEXTURETRANSFORMFLAGS, 
                                   D3DMTTFF_COUNT3 | D3DMTTFF_PROJECTED );

Este exemplo informa o sistema para coordenar de textura transmitir três elementos a conversor de bitmap. O conversor de bitmap divide os primeiros dois elementos, a terceira, produzindo as coordenadas 2-D textura necessário para endereço de textura.

O uso de textura Coordenada de processamento

Você pode usar coordenar de textura processamento para atingir os efeitos especiais texturing. Para exemplo a seguinte etapas apresentação como você pode animar Textures (por tradução ou rotação) em um modelo.

  • Defina coordenadas textura 2-D no seu formato vértice.

    // Use a single texture, with 2-D texture coordinates. This
    // bit-pattern should be expanded to include position, normal, 
    // and color information as needed.
    DWORD dwFVFTex = D3MFVF_TEX1 | D3DMFVF_TEXCOORDSIZE2(0);
    
  • Configure a conversor de bitmap usar coordenadas textura 2-D.

    SetTextureStageState(0, D3DMTSS_TEXTURETRANSFORMFLAGS, D3DMTTFF_COUNT2);
    
  • Definir e configurar um apropriado coordenar de textura matriz transformação.

    // M is a D3DMMATRIX 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
    
    M._11 = 1.0;
    /* ... */
    M._31 = du; 
    M._32 = dv; 
    /* ... */
    M._44 = 1.0;
    

See Also

Concepts

Texture Coordinates