PFND3D10DDI_RESOURCECOPY función de devolución de llamada (d3d10umddi.h)
La función ResourceCopy copia un recurso de origen completo en un recurso de destino.
PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;
void Pfnd3d10ddiResourcecopy(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
D3D10DDI_HRESOURCE unnamedParam3
)
{...}
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
hSrcResource [in]
Identificador del recurso de origen desde el que se va a copiar.
None
El controlador puede usar la función de devolución de llamada pfnSetErrorCb para establecer un código de error.
El tiempo de ejecución de Microsoft Direct3D llama a la función ResourceCopy del controlador de visualización en modo de usuario para informar al controlador de que se copie del recurso de origen especificado en el recurso de destino especificado. Los recursos de origen y destino no pueden ser el mismo recurso. Tanto los recursos de origen como de destino deben ser el mismo tipo de recurso y tener las mismas dimensiones. Los tipos de formato (valores con tipo DXGI_FORMAT) de ambos recursos se deben convertir entre sí. 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 de dispositivos interfirió con el funcionamiento de ResourceCopy (que normalmente no debería ocurrir), el controlador puede devolver D3DDDIERR_DEVICEREMOVED.
La versión de Direct3D 10.1 de ResourceCopy tiene una diferencia de funcionalidad principal de la versión direct3D 10.0 con respecto al miembro ResourceDimension de D3D10DDIARG_CREATERESOURCE para los recursos de origen y destino que se crearon en llamadas a la función CreateResource(D3D10) del controlador. Para la versión de Direct3D 10.0 de ResourceCopy, el miembro ResourceDimension de D3D10DDIARG_CREATERESOURCE para los recursos de origen y destino debe coincidir. La versión de Direct3D 10.1 de ResourceCopy permite una ligera relajación para el miembro ResourceDimension de D3D10DDIARG_CREATERESOURCE para los recursos de origen y destino. La versión de Direct3D 10.1 de ResourceCopy permite copiar recursos de origen de Tex2D en recursos de destino de TexCube o recursos de origen de TexCube en recursos de destino de Tex2D. Además, la distinción entre TexCube en el nivel de recurso ha desaparecido en la versión 10.1 de Direct3D. La versión de Direct3D 10.1 de ResourceCopy solo representa si puede copiar un TexCube. En la versión 10.0 de Direct3D, la copia de un recurso, la validación de un destino de representación múltiple, etc. (es decir, varias operaciones que requerían que el tipo de recurso fuera idéntico) incluían la distinción de TexCube para factorizar en el tipo de recurso. En Direct3D versión 10.1, el entorno de ejecución solo puede determinar Tex2D.
En las secciones siguientes se enumeran las condiciones para copiar y convertir:
asincrónica
Para la copia, ResourceCopy garantiza que los recursos de origen y destino se crearon mediante la función CreateResource(D3D10) 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 D3D10DDIARG_CREATERESOURCE .
- Los recursos de origen y destino se crearon con el mismo tipo de recurso y dimensionalidad (búfer, textura unidimensional (1D), y así sucesivamente) estableciendo el mismo valor en el miembro ResourceDimension de D3D10DDIARG_CREATERESOURCE.
- Los recursos de origen y destino no forman parte del mismo recurso.
- Cada formato de recurso de origen y destino especificado en el miembro Format de D3D10DDIARG_CREATERESOURCE está 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 de muestra única, que solo deben tener el mismo número de muestras.
Convertir
Para la conversión, ResourceCopy garantiza que los recursos de origen y destino se crearon mediante la función CreateResource(D3D10) 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 D3D10DDIARG_CREATERESOURCE .
- Los recursos de origen y destino se crearon con el mismo tipo de recurso (búfer, textura unidimensional (1D), y así sucesivamente) estableciendo el mismo valor en el miembro ResourceDimension de D3D10DDIARG_CREATERESOURCE.
- Las dimensiones de los recursos de origen y destino coinciden para la conversión.
- Los recursos de origen y destino no forman parte del mismo recurso.
- Cada formato de recurso de origen y destino especificado en el miembro Format de D3D10DDIARG_CREATERESOURCE admite la operación de conversión adecuada. En el caso de los recursos comprimidos de bloque mipped, todas las dimensiones se validan para ser una potencia de dos.
- Los recursos de origen y destino deben tener el mismo número de muestras y niveles de calidad; excepto para los recursos de muestra única, que solo deben tener el mismo número de muestras.
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows. |
Plataforma de destino | Escritorio |
Encabezado | d3d10umddi.h (incluya D3d10umddi.h) |