Compartir a través de


Método ID3D10Texture1D::Map (d3d10.h)

Obtenga un puntero a los datos contenidos en un subrecurso y deniegue el acceso de GPU a ese subrecurso.

Sintaxis

HRESULT Map(
  [in]  UINT      Subresource,
  [in]  D3D10_MAP MapType,
  [in]  UINT      MapFlags,
  [out] void      **ppData
);

Parámetros

[in] Subresource

Tipo: UINT

Número de índice del subrecurso. Consulte D3D10CalcSubresource para obtener más detalles.

[in] MapType

Tipo: D3D10_MAP

Especifica los permisos de lectura y escritura de la CPU para un recurso. Para obtener los valores posibles, consulte D3D10_MAP.

[in] MapFlags

Tipo: UINT

Marca que especifica lo que debe hacer la CPU cuando la GPU está ocupada. Esta marca es opcional.

[out] ppData

Tipo: void**

Puntero a los datos de recursos de textura.

Valor devuelto

Tipo: HRESULT

Si esta función se realiza correctamente, devuelve S_OK. Para otras restricciones y una lista de valores de error que cualquiera de los métodos Map puede devolver, vea Comentarios.

Comentarios

La asignación de una textura permite que la CPU acceda directamente a los datos subyacentes en el subrecurso de una textura. Para que el método se realice correctamente, la textura que se asigna debe crearse con las marcas adecuadas (vea D3D10_CPU_ACCESS_FLAG) y su uso especificado (vea D3D10_USAGE) debe ser D3D10_USAGE_DYNAMIC o D3D10_USAGE_STAGING.

Los siguientes valores devueltos indican errores comunes de los métodos Map :

Elemento Descripción
DXGI_ERROR_WAS_STILL_DRAWING Si MapFlags especifica D3D10_MAP_FLAG_DO_NOT_WAIT y la GPU aún no ha terminado con el recurso, Map devuelve DXGI_ERROR_WAS_STILL_DRAWING.
DXGI_ERROR_DEVICE_REMOVED Map devuelve DXGI_ERROR_DEVICE_REMOVED si MapType permite el acceso de lectura de CPU y se ha quitado la tarjeta de vídeo.
 

Para obtener más información sobre los valores devueltos anteriores, vea DXGI_ERROR.

El mapa tiene las siguientes restricciones:

  • Un único subrecurso no se puede asignar varias veces; es decir, no llame a Map en un subrecurso que ya está asignado.
  • Cualquier subrecurso enlazado a la canalización debe desasignación antes de que se pueda ejecutar cualquier operación de representación (es decir, antes de que se pueda ejecutar ID3D10Device::D raw).
Las aplicaciones deben convertir el puntero pData void al tipo adecuado para acceder significativamente a los datos subrecursos subyacentes. Por ejemplo, el código siguiente muestra cómo leer cada elemento de textura de un subrecurso 1D. Se supone que la textura se creó mediante DXGI_FORMAT_R32G32B32A32_FLOAT y que pData es el puntero a la salida de datos del recurso de textura desde una llamada correcta a este método.

FLOAT* pTexels = (FLOAT*)pData;
for( UINT col = 0; col < width; col++ )
{
  pTexels[col*4 + 0]; // Alpha
  pTexels[col*4 + 1]; // Blue
  pTexels[col*4 + 2]; // Green
  pTexels[col*4 + 3]; // Red
}

Diferencias entre Direct3D 9 y Direct3D 10:

El mapa en Direct3D 10 es análogo al bloqueo de recursos en Direct3D 9.

Requisitos

   
Plataforma de destino Windows
Encabezado d3d10.h
Library D3D10.lib

Consulte también

Interfaz ID3D10Texture1D