D3D10_MAPPED_TEXTURE2D-Struktur (d3d10.h)
Bietet Zugriff auf Unterressourcendaten in einer 2D-Textur.
Syntax
typedef struct D3D10_MAPPED_TEXTURE2D {
void *pData;
UINT RowPitch;
} D3D10_MAPPED_TEXTURE2D;
Member
pData
Typ: void*
Zeiger auf die Daten.
RowPitch
Typ: UINT
Die Tonhöhe oder Breite oder physische Größe (in Byte) einer Zeile einer nicht komprimierten Textur. Eine blockkomprimierte Textur wird in 4x4-Blöcken codiert (siehe virtuelle Größe im Vergleich zu physischer Größe). Daher ist RowPitch die Anzahl der Bytes in einem Block von 4x4 Texels.
Hinweise
Diese Struktur wird in einem Aufruf von Map verwendet.
Um die Zeilenhöhe zu veranschaulichen, nehmen Sie eine unkomprimierte 2D-Textur mit Mipmap-Ebenen an, wie in der folgenden Abbildung dargestellt.
Visualisieren Sie die Textur der obersten Ebene, die in einer einzelnen Ebene gezeichnet wird, wie in der folgenden Abbildung.
Das tatsächliche Layout der einzelnen Elemente im Arbeitsspeicher ähnelt jedoch eher der folgenden Abbildung.
In diesem Beispiel umfasst der Zeilenabstand 5 Elemente (eine Zeile), deren Größe die fünffache Anzahl von Bytes pro Element betragen würde.
Verwenden Sie Zeilenabstand, um einen Zeiger zwischen Zeilen innerhalb einer einzelnen 2D-Texturebene zu erweitern.
Beispiel
Um auf Daten in z. B. der dritten Mipmap-Ebene zuzugreifen, müssen Sie den pData-Zeiger wie im folgenden Beispiel für eine Gleitkommatextur umstellen.
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));
}
Anforderungen
Anforderung | Wert |
---|---|
Header | d3d10.h |