Compartir a través de


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

Los conjuntos de funciones SetRenderTargets(D3D11) representan superficies de destino.

Sintaxis

PFND3D11DDI_SETRENDERTARGETS Pfnd3d11ddiSetrendertargets;

void Pfnd3d11ddiSetrendertargets(
  [in] D3D10DDI_HDEVICE unnamedParam1,
  [in] const D3D10DDI_HRENDERTARGETVIEW *unnamedParam2,
  [in] UINT NumRTVs,
  [in] UINT ClearSlots,
  [in] D3D10DDI_HDEPTHSTENCILVIEW unnamedParam5,
  [in] const D3D11DDI_HUNORDEREDACCESSVIEW *unnamedParam6,
  [in] const UINT *unnamedParam7,
       UINT UAVStartSlot,
  [in] UINT NumUAVs,
  [in] UINT UAVRangeStart,
  [in] UINT UAVRangeSize
)
{...}

Parámetros

[in] unnamedParam1

hDevice: identificador del dispositivo de visualización (contexto gráfico).

[in] unnamedParam2

phRenderTargetView: matriz de identificadores para los objetos de vista de destino de representación (RTV) que se van a establecer. Tenga en cuenta que algunos valores de identificador pueden ser NULL.

[in] NumRTVs

Número de elementos de la matriz proporcionada en phRenderTargetView para que se establezcan los RTV.

[in] ClearSlots

Número de objetos RTV que se van a desenlacer; es decir, los objetos de vista de destino que se representaron previamente enlazados, pero que ya no necesitan enlazarse.

[in] unnamedParam5

hDepthStencilView: identificador del búfer de galería de símbolos de profundidad que se va a establecer.

[in] unnamedParam6

phUnorderedAccessView: matriz de identificadores en los objetos de vista de acceso sin ordenar (UAV) que se van a establecer.

[in] unnamedParam7

pUAVInitialCounts: matriz de desplazamientos de búfer anexado y consumo. Este parámetro solo es relevante para los UAV de la matriz de phUnorderedAccessView que se crearon con D3D11_DDI_BUFFER_UAV_FLAG_APPEND o D3D11_DDI_BUFFER_UAV_FLAG_COUNTER establecidos en el miembro Flags de la estructura de D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW cuando se creó el UAV; de lo contrario, se omite. Si un elemento de esta matriz se establece en -1, se debe mantener el desplazamiento actual de ese búfer de anexión y consumo. Cualquier otro valor hace que el controlador establezca el contador oculto para ese UAV anexar y consumir búfer.

UAVStartSlot

Índice del primer UAV que se va a enlazar. UAVStartSlot debe ser al menos tan grande como el parámetro NumRTVs.

Nota

Solo existe un conjunto compartido de puntos de enlace para RTV y UAV. Los RTV se enlazan primero, seguidos de UAV.

[in] NumUAVs

Número de UAV que se van a enlazar.

[in] UAVRangeStart

El primer UAV del conjunto de todos los UAV actualizados (que incluye enlaces de NULL).

[in] UAVRangeSize

Número de UAV en el conjunto de todos los UAV actualizados (que incluye enlaces de NULL).

Valor devuelto

Ninguno

Observaciones

Los descriptores de recursos como RTV y UMV deben enlazarse (colocar en ranuras de entrada) antes de que los sombreadores puedan acceder a ellos para lectura o escritura.

En la imagen siguiente se muestra un ejemplo con cinco recursos.

ejemplo de RTV y UAV.

En el ejemplo anterior:

  • NumRTVs = 2
  • UAVStartSlot = 2
  • NumUAVs = 3

NumUAVs y UAVStartSlot especificar qué intervalo de la matriz uavs contiene los cambios en relación con el estado enlazado anteriormente. Tenga en cuenta que los puntos del intervalo podrían ser sin cambios.

Los parámetros UAVRangeStart y UAVRangeSize son una comodidad que revela el intervalo de lo que realmente cambió dado que el DDI de Direct3D siempre enlaza todo (incluido lo que no ha cambiado). El tiempo de ejecución D3D11 los formula en nombre de la aplicación como información adicional para los escritores de controladores como sugerencias para la posible optimización. Normalmente, el tiempo de ejecución D3D11 llamará a esta función con UAVRangeStart y valores de UAVRangeSize para indicar todo el intervalo. Con el ejemplo anterior:

  • Para elegir todo el intervalo (no se cree que se produzca ningún cambio), UAVRangeStart = 2 y UAVRangeSize = 3.
  • Para indicar que solo el primer UAV podría haber cambiado, UAVRangeStart = 2 y UAVRangeSize = 1.

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

El controlador no debe encontrar ningún error, excepto D3DDDIERR_DEVICEREMOVED. Por lo tanto, si el controlador pasa algún error, excepto por D3DDDIERR_DEVICEREMOVED, en una llamada a la funciónpfnSetErrorCb, el tiempo de ejecución de Microsoft 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 SetRenderTargets (lo que normalmente no debería ocurrir), el controlador puede devolver D3DDDIERR_DEVICEREMOVED.

Requisitos

Requisito Valor
cliente mínimo admitido SetRenderTargets(D3D11) se admite a partir del sistema operativo Windows 7.
de la plataforma de destino de Escritorio
encabezado de d3d10umddi.h (incluya D3d10umddi.h)

Consulte también

D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW

D3D11DDI_DEVICEFUNCS

pfnSetErrorCb de