Condividi tramite


D3D10_MAPPED_TEXTURE2D struttura (d3d10.h)

Fornisce l'accesso ai dati di sottoresource in una trama 2D.

Sintassi

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

Members

pData

Tipo: void*

Puntatore ai dati.

RowPitch

Tipo: UINT

Il passo, o la larghezza o le dimensioni fisiche (in byte), di una riga di una trama non compressa. Una trama compressa a blocchi è codificata in blocchi 4x4 (vedere dimensioni virtuali e dimensioni fisiche). RowPitch è quindi il numero di byte in un blocco di 4x4 texel.

Commenti

Questa struttura viene usata in una chiamata a Map.

Per illustrare il passo della riga, presupporre una trama 2D non compressa con livelli di mipmap, come illustrato nella figura seguente.

Illustrazione di una trama 2D non compressa con livelli mipmap

Visualizzare la trama di primo livello disegnata in un singolo piano come la figura seguente.

Illustrazione di un singolo piano

Tuttavia, il layout effettivo di ogni elemento in memoria è più simile alla figura seguente.

Illustrazione del passo della riga in memoria

Per questo esempio, il passo della riga include 5 elementi (una riga), le cui dimensioni sarebbero cinque volte il numero di byte per elemento.

Usare il passo della riga per avanzare un puntatore tra righe all'interno di un singolo piano di trama 2D.

Esempio

Per accedere ai dati in, ad esempio, il terzo livello mipmap, è necessario eseguire il cast del puntatore pData come illustrato nell'esempio seguente per una trama a virgola mobile.

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));
}

Requisiti

Requisito Valore
Intestazione d3d10.h

Vedi anche

Strutture delle risorse