structure D3D10_MAPPED_TEXTURE2D (d3d10.h)
Fournit l’accès aux données de sous-ressource dans une texture 2D.
Syntaxe
typedef struct D3D10_MAPPED_TEXTURE2D {
void *pData;
UINT RowPitch;
} D3D10_MAPPED_TEXTURE2D;
Membres
pData
Type : void*
Pointeur vers les données.
RowPitch
Type : UINT
Pitch, ou largeur, ou taille physique (en octets) d’une ligne d’une texture non compressée. Une texture compressée en bloc est encodée en blocs 4x4 (voir taille virtuelle et taille physique) ; Par conséquent, RowPitch est le nombre d’octets dans un bloc de 4x4 texels.
Remarques
Cette structure est utilisée dans un appel à Mapper.
Pour illustrer le pitch de ligne, supposons une texture 2D non compressée avec des niveaux mipmap, comme illustré dans l’illustration suivante.
Visualisez la texture de niveau supérieur dessinée dans un seul plan, comme dans l’illustration suivante.
Toutefois, la disposition réelle de chaque élément en mémoire ressemble davantage à l’illustration suivante.
Pour cet exemple, le pitch de ligne englobe 5 éléments (une ligne), dont la taille est cinq fois supérieure au nombre d’octets par élément.
Utilisez le pitch de ligne pour faire avancer un pointeur entre des lignes au sein d’un seul plan de texture 2D.
Exemple
Pour accéder aux données dans, par exemple, le troisième niveau mipmap, vous devez caster le pointeur pData comme illustré dans l’exemple suivant pour une texture à virgule flottante.
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));
}
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | d3d10.h |