Compartir a través de


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.

Ilustración de una textura 2D sin comprimir con niveles de mapa mip

Visualice la textura de nivel superior dibujada en un solo plano, como en la ilustración siguiente.

Ilustración de un solo plano

Sin embargo, el diseño real de cada elemento en memoria es más similar a la ilustración siguiente.

Ilustración del tono de fila en memoria

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

Consulte también

Estructuras de recursos