Compartir a través de


Método ID3D11DeviceContext::CopyResource (d3d11.h)

Copie todo el contenido del recurso de origen en el recurso de destino mediante la GPU.

Sintaxis

void CopyResource(
  [in] ID3D11Resource *pDstResource,
  [in] ID3D11Resource *pSrcResource
);

Parámetros

[in] pDstResource

Tipo: ID3D11Resource*

Puntero a la interfaz ID3D11Resource que representa el recurso de destino.

[in] pSrcResource

Tipo: ID3D11Resource*

Puntero a la interfaz ID3D11Resource que representa el recurso de origen.

Valor devuelto

None

Observaciones

Este método es inusual en que hace que la GPU realice la operación de copia (similar a un memcpy por la CPU). Como resultado, tiene algunas restricciones diseñadas para mejorar el rendimiento. Por ejemplo, los recursos de origen y destino:

  • Debe ser recursos diferentes.
  • Debe ser el mismo tipo.
  • Debe tener dimensiones idénticas (incluido el ancho, el alto, la profundidad y el tamaño según corresponda).
  • Debe tener formatos DXGI compatibles, lo que significa que los formatos deben ser idénticos o al menos del mismo grupo de tipos. Por ejemplo, una textura de DXGI_FORMAT_R32G32B32_FLOAT se puede copiar en una textura de DXGI_FORMAT_R32G32B32_UINT, ya que ambos formatos están en el grupo DXGI_FORMAT_R32G32B32_TYPELESS. CopyResource puede copiar entre algunos tipos de formato. Para obtener más información, consulta Conversión de formato con Direct3D 10.1.
  • No se puede asignar actualmente.
CopyResource solo admite la copia; no admite ningún ajuste, tecla de color ni mezcla. CopyResource puede reinterpretar los datos de recursos entre algunos tipos de formato. Para obtener más información, consulta Conversión de formato con Direct3D 10.1.

No se puede usar un recurso inmutable como destino. Puede usar un recurso de galería de símbolos de profundidad como origen o destino siempre que el nivel de característica sea D3D_FEATURE_LEVEL_10_1 o superior. En el caso de los niveles de características 9_x, los recursos creados con la marca D3D11_BIND_DEPTH_STENCIL solo se pueden usar como origen para CopyResource. Los recursos creados con la funcionalidad de muestreo múltiple (consulte DXGI_SAMPLE_DESC) se pueden usar como origen y destino solo si tanto el origen como el destino tienen un recuento y una calidad multimuestreo idénticos. Si el origen y el destino difieren en el recuento y la calidad multimuestreo o si uno es multimuestreo y el otro no es multimuestreo, se produce un error en la llamada a ID3D11DeviceContext::CopyResource . Use ID3D11DeviceContext::ResolveSubresource para resolver un recurso de muestreo múltiple en un recurso que no sea multimuestreo.

El método es una llamada asincrónica, que se puede agregar a la cola de búfer de comandos. Esto intenta quitar los puestos de canalización que pueden producirse al copiar datos. Para obtener más información, consulta Consideraciones sobre el rendimiento.

Se recomienda usar ID3D11DeviceContext::CopySubresourceRegion en su lugar si solo necesita copiar una parte de los datos de un recurso.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d11.h
Library D3D11.lib

Consulte también

ID3D11DeviceContext

ID3D11Resource