estructura D3D10_MAPPED_TEXTURE2D (d3d10.h)
Proporciona acceso a los datos de subrecursos en una textura 2D.
Sintaxis
typedef struct D3D10_MAPPED_TEXTURE2D {
void *pData;
UINT RowPitch;
} D3D10_MAPPED_TEXTURE2D;
Miembros
pData
Tipo: void*
Puntero en los datos.
RowPitch
Tipo: UINT
El tono, el ancho o el tamaño físico (en bytes), de una fila de una textura sin comprimir. Una textura comprimida por bloques se codifica en bloques 4x4 (vea tamaño virtual frente a tamaño físico) ; por lo tanto, RowPitch es el número de bytes en un bloque de 4 x 4 elementos de textura.
Comentarios
Esta estructura se usa en una llamada a Map.
Para ilustrar el tono de fila, supongamos una textura 2D sin comprimir con niveles de mapa MIP, como se muestra en la ilustración siguiente.
Visualice la textura de nivel superior dibujada en un solo plano, como en la ilustración siguiente.
Sin embargo, el diseño real de cada elemento en memoria es más similar a la ilustración siguiente.
En este ejemplo, el tono de fila abarca 5 elementos (una fila), cuyo tamaño sería cinco veces el número de bytes por elemento.
Use el tono de fila para avanzar un puntero entre filas dentro de un único plano de textura 2D.
Ejemplo
Para acceder a los datos de , por ejemplo, el tercer nivel de mapa mip, debe convertir el puntero pData como se muestra en el ejemplo siguiente para una textura de punto flotante.
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 |
---|---|
Header | d3d10.h |