Compartilhar via


estrutura D3D10_MAPPED_TEXTURE2D (d3d10.h)

Fornece acesso a dados de sub-recurso em uma textura 2D.

Sintaxe

typedef struct D3D10_MAPPED_TEXTURE2D {
  void *pData;
  UINT RowPitch;
} D3D10_MAPPED_TEXTURE2D;

Membros

pData

Tipo: void*

Ponteiro para os dados.

RowPitch

Tipo: UINT

A inclinação, a largura ou o tamanho físico (em bytes), de uma linha de uma textura descompactada. Uma textura compactada por bloco é codificada em blocos 4x4 (consulte tamanho virtual versus tamanho físico) ; portanto, RowPitch é o número de bytes em um bloco de texels 4x4.

Comentários

Essa estrutura é usada em uma chamada para Map.

Para ilustrar a inclinação da linha, suponha uma textura 2D descompactada com níveis de mipmap, conforme mostrado na ilustração a seguir.

Ilustração de uma textura 2D descompactada com níveis de mipmap

Visualize a textura de nível superior desenhada em um único plano, como a ilustração a seguir.

Ilustração de um único plano

No entanto, o layout real de cada elemento na memória se parece mais com a ilustração a seguir.

Ilustração da inclinação de linha na memória

Para este exemplo, o tom de linha abrange 5 elementos (uma linha), cujo tamanho seria cinco vezes o número de bytes por elemento.

Use a inclinação de linha para avançar um ponteiro entre linhas dentro de um único plano de textura 2D.

Exemplo

Para acessar dados no terceiro nível de mipmap, você deve converter o ponteiro pData conforme demonstrado no exemplo a seguir para uma textura de ponto flutuante.

D3D10_MAPPED_TEXTURE2D mappedTexture;
if( SUCCEEDED( pTexture->Map( D3D10CalcSubresource(2, 0, 3), D3D10_MAP_WRITE_DISCARD, 0, &mappedTexture )))
{
    D3D10_TEXTURE2D_DESC desc;
    pTexture->GetDesc( &desc );
	
    // Compute the width and height of the third mipmap level
    const UINT WIDTH = desc.Width >> 2;
    const UINT HEIGHT = desc.Height >> 2;
	
    FLOAT* pTexels = (FLOAT*)mappedTexture.pData;
    for( UINT row = 0; row < HEIGHT; row++ )
    {
      UINT rowStart = row * mappedTexture.RowPitch/4;
      for( UINT col = 0; col < WIDTH; col++ )
      {
        pTexels[rowStart + col*4 + 0]; // Red
        pTexels[rowStart + col*4 + 1]; // Green
        pTexels[rowStart + col*4 + 2]; // Blue
        pTexels[rowStart + col*4 + 3]; // Alpha
      }
    }

    pTexture->Unmap(D3D10CalcSubresource(2, 0, 3));
}

Requisitos

Requisito Valor
Cabeçalho d3d10.h

Confira também

Estruturas de recursos