PFND3D11_1DDI_RESOURCECOPYREGION función de devolución de llamada (d3d10umddi.h)

Copia una región de subrecurso de origen en una ubicación en un subrecurso de destino.

Sintaxis

PFND3D11_1DDI_RESOURCECOPYREGION Pfnd3d111DdiResourcecopyregion;

void Pfnd3d111DdiResourcecopyregion(
       D3D10DDI_HDEVICE unnamedParam1,
       D3D10DDI_HRESOURCE unnamedParam2,
       UINT unnamedParam3,
       UINT unnamedParam4,
       UINT unnamedParam5,
       UINT unnamedParam6,
       D3D10DDI_HRESOURCE unnamedParam7,
       UINT unnamedParam8,
       const D3D10_DDI_BOX *unnamedParam9,
  [in] UINT CopyFlags
)
{...}

Parámetros

unnamedParam1

hDevice [in]

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

hDstResource [in]

Identificador del recurso de destino al que se va a copiar.

unnamedParam3

DstSubresource [in]

Índice que indica el subrecurso de destino al que se va a copiar.

unnamedParam4

DstX [in]

Coordenada x del subrecurso de destino.

unnamedParam5

DstY [in]

Coordenada y del subrecurso de destino. Para subrecursos unidimensionales (1D), DstY se establece en cero.

unnamedParam6

DstZ [in]

Coordenada z del subrecurso de destino. Para subrecursos unidimensionales (1D) y bidimensionales (2D), DstZ se establece en cero.

unnamedParam7

hSrcResource [in]

Identificador del recurso de origen desde el que se va a copiar.

unnamedParam8

SrcSubresource [in]

Índice que indica el subrecurso de origen desde el que se va a copiar.

unnamedParam9

pSrcBox [in, optional]

Puntero a una estructura de D3D10_DDI_BOX que especifica un cuadro que se ajusta al subrecurso de origen o de destino. Si pSrcBox es NULL, el controlador debe copiar toda la subrecurso de origen en el destino.

Si los miembros de la estructura de D3D10_DDI_BOX son de modo que left>=right, top>=bottom o front>=back, pSrcBox se considera vacío y ResourceCopyRegion(D3D11_1) no debe realizar ninguna operación de copia.

[in] CopyFlags

Valor que especifica las características de la operación de copia como OR bit a bit de los valores del tipo de enumeración D3D11_1_DDI_COPY_FLAGS .

Valor devuelto

None

Observaciones

El controlador puede usar la función de devolución de llamada pfnSetErrorCb para establecer un código de error.

El entorno de ejecución de Microsoft Direct3D llama a la función ResourceCopyRegion(D3D11_1) del controlador de pantalla en modo de usuario para informar al controlador de que se copie de la región subrecurso de origen especificada en una ubicación en el subrecurso de destino especificado. Los subrecursos de origen y destino pueden ser el mismo subrecurso del mismo recurso. Tanto los recursos de origen como de destino deben ser el mismo tipo de recurso y deben tener tipos de formato (valores con tipo DXGI_FORMAT) que se pueden convertir entre sí.

Para los búferes, todas las coordenadas deben estar en bytes; mientras que para las texturas, todas las coordenadas deben estar en píxeles. El cuadro al que apunta el parámetro pSrcBox no debe extenderse sobre los bordes de la región de subrecurso de origen o el subrecurso de destino. El origen y el recurso de destino no se deben asignar actualmente. Además, las marcas de creación de recursos restringen si el recurso puede participar en la operación de copia.

El controlador no debe encontrar ningún error, excepto por D3DDDIERR_DEVICEREMOVED. Por lo tanto, si el controlador pasa algún error, excepto por D3DDDIERR_DEVICEREMOVED, en una llamada a la función pfnSetErrorCb , el tiempo de ejecución de Direct3D determinará que el error es crítico. Incluso si se quitó el dispositivo, no es necesario que el controlador devuelva D3DDDIERR_DEVICEREMOVED; Sin embargo, si la eliminación del dispositivo interfirió con el funcionamiento de (que normalmente no debería ocurrir), el controlador puede devolver D3DDDIERR_DEVICEREMOVED.

El controlador puede implementar una función ResourceCopyRegion(D3D11_1) que puede contener una instrucción switch para procesar la copia y la conversión. Es decir, el controlador puede implementar un resourceCopyRegion(D3D11_1) y puede establecer el miembro pfnResourceConvertRegion de la estructura de D3D11_1DDI_DEVICEFUNCS para que apunte a ResourceCopyRegion(D3D11_1) junto con el miembro pfnResourceCopyRegion de D3D11_1DDI_DEVICEFUNCS. Sin embargo, para mejorar el rendimiento, el controlador puede implementar funciones ResourceCopyRegion(D3D11_1) y ResourceConvertRegion(D3D11_1).

En las secciones siguientes se enumeran las condiciones para copiar y convertir:

asincrónica

Para copiar, ResourceCopyRegion(D3D11_1) garantiza que los recursos de origen y destino se crearon a través de la función CreateResource(D3D11) del controlador con las siguientes condiciones:

  • El recurso de destino no se creó con el valor D3D10_DDI_USAGE_IMMUTABLE establecido en el miembro Usage de la estructura D3D11DDIARG_CREATERESOURCE .
  • Si el recurso de origen o de destino tiene el D3D10_DDI_BIND_DEPTH_STENCIL bit establecido en el miembro BindFlags del D3D10DDIARG_CREATERESOURCE o es un recurso multi muestreado, ResourceCopyRegion(D3D11_1) comprueba que el parámetro pSrcBox es NULL, mientras que los parámetros DstX, DstY y DstZ son 0.
  • Los índices subrecursos están en el intervalo.
  • Las restricciones de alineación se aplican a las coordenadas.
  • Los recursos de origen y destino no forman parte del mismo subrecurso exacto.
  • Cada formato de recurso de origen y destino especificado en el miembro Format de D3D11DDIARG_CREATERESOURCE se encuentra en el mismo grupo sin tipo.
  • Los recursos de origen y destino deben tener el mismo número de muestras y niveles de calidad; excepto para los recursos muestreados únicos, que solo deben tener el mismo número de muestras.
ResourceCopyRegion(D3D11_1) no garantiza que el cuadro de origen que se desfase por los desplazamientos de destino se ajuste completamente al recurso. ResourceCopyRegion(D3D11_1) tampoco garantiza que no se asigne ningún subrecurso.

Convertir

Para la conversión, ResourceCopyRegion(D3D11_1) garantiza que los recursos de origen y destino se crearon a través de la función CreateResource(D3D11) del controlador con las siguientes condiciones:

  • El recurso de destino no se creó con el valor D3D10_DDI_USAGE_IMMUTABLE establecido en el miembro Usage de la estructura D3D11DDIARG_CREATERESOURCE .
  • Si el recurso de origen o de destino tiene el bit D3D10_DDI_BIND_DEPTH_STENCIL establecido en el miembro BindFlags de D3D11DDIARG_CREATERESOURCE o es un recurso multi muestreado, ResourceCopyRegion(D3D11_1) comprueba que el parámetro pSrcBox es NULL, mientras que los parámetros DstX, DstY y DstZ son 0.
  • Los índices subrecursos están en el intervalo.
  • Las restricciones de alineación se aplican a las coordenadas.
  • Los recursos de origen y destino no forman parte del mismo subrecurso exacto.
  • Cada formato de recurso de origen y destino especificado en el miembro Format de D3D11DDIARG_CREATERESOURCE se encuentra en el mismo grupo sin tipo.
  • Cada formato de recurso de origen y destino especificado en el miembro Format de D3D11DDIARG_CREATERESOURCE admite la operación de conversión adecuada.
  • Los recursos de origen y destino deben tener el mismo número de muestras y niveles de calidad; excepto para los recursos muestreados únicos, que solo deben tener el mismo número de muestras.
ResourceCopyRegion(D3D11_1) no garantiza que no se asigne ningún subrecurso. ResourceCopyRegion(D3D11_1) tampoco garantiza que el cuadro de origen que se desfase por los desplazamientos de destino se ajuste completamente al recurso.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Escritorio
Encabezado d3d10umddi.h (incluya D3d10umddi.h)

Consulte también

CreateResource(D3D11)

D3D10_DDI_BOX

D3D11DDIARG_CREATERESOURCE

D3D11_1DDI_DEVICEFUNCS

D3D11_1_DDI_COPY_FLAGS

pfnSetErrorCb