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.
Visualizzare la trama di primo livello disegnata in un singolo piano come la figura seguente.
Tuttavia, il layout effettivo di ogni elemento in memoria è più simile alla figura seguente.
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 |