Compartir a través de


PFND3DDDI_DRAWRECTPATCH función de devolución de llamada (d3dumddi.h)

La función DrawRectPatch dibuja una revisión rectangular nueva o almacenada en caché o actualiza la especificación de una revisión definida previamente.

Sintaxis

PFND3DDDI_DRAWRECTPATCH Pfnd3dddiDrawrectpatch;

HRESULT Pfnd3dddiDrawrectpatch(
  [in] HANDLE hDevice,
       const D3DDDIARG_DRAWRECTPATCH *unnamedParam2,
       const D3DDDIRECTPATCH_INFO *unnamedParam3,
       const FLOAT *unnamedParam4
)
{...}

Parámetros

[in] hDevice

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

unnamedParam2

pData [in]

Puntero a una estructura D3DDDIARG_DRAWRECTPATCH que describe la revisión rectangular que se va a dibujar.

unnamedParam3

pInfo [in]

Opcional. Puntero a una estructura D3DDDIRECTPATCH_INFO que describe información sobre la revisión rectangular.

unnamedParam4

pPatch [in]

Opcional. Puntero a un búfer que contiene cuatro valores de punto flotante (D3DFLOAT[4]) que proporcionan los recuentos de segmentos para cada uno de los cuatro bordes de la revisión rectangular.

Valor devuelto

DrawRectPatch devuelve S_OK o un resultado de error adecuado si la revisión rectangular no se dibuja correctamente.

Observaciones

Cuando el tiempo de ejecución de Microsoft Direct3D llama apPatch la función drawRectPatch del controlador de pantalla en modo de usuario, puede proporcionar información opcionalmente en el y parámetros de pInfo de. El tiempo de ejecución establece marcas en el flags miembro de la estructura D3DDDIARG_DRAWRECTPATCH especificada por pData para indicar si proporciona esta información opcional.

El tiempo de ejecución proporciona un valor UINT en el miembro Handle de D3DDDIARG_DRAWRECTPATCH para hacer referencia a la superficie de revisión. Cada vez que el tiempo de ejecución vuelve a dibujar la superficie de revisión, pasa el valor del identificador de revisión y no es necesario volver a especificar la estructura de datos D3DDDIRECTPATCH_INFO para la superficie de revisión. El controlador de visualización en modo de usuario puede precompute y almacenar en caché coeficientes de diferencia de avance y cualquier otra información. Por lo tanto, las llamadas posteriores al drawRectPatch del controlador función que usan el mismo valor de identificador de revisión se ejecutan de forma más eficaz.

La aplicación determina el valor real de Handle y no está bajo control en tiempo de ejecución. Por lo tanto, el controlador debe controlar cualquier valor que un UINT pueda especificar.

El especial Handle valor de cero indica que la revisión es dinámica; por lo tanto, el controlador no puede precompute ni almacenar en caché la información de la revisión. Un valor distinto de cero para Handle indica que la revisión es estática (o actualizada con baja frecuencia); por lo tanto, el controlador puede precompute y almacenar en caché la información de la revisión.

El controlador debe controlar los siguientes escenarios en su función DrawRectPatch:

  • Si el miembro Handle es cero, la revisión es dinámica. El controlador no debe precompute ni almacenar en caché la información de la revisión. En esta situación, el tiempo de ejecución pasa un puntero a una estructura de D3DDDIRECTPATCH_INFO en el parámetro pInfo y establece la marca de RTPATCHFLAG_HASINFO en el miembro Flags de la estructura D3DDDIARG_DRAWRECTPATCH para indicar la presencia de la estructura D3DDDIRECTPATCH_INFO en pInfo. Opcionalmente, el tiempo de ejecución también puede establecer la marca RTPATCHFLAG_HASSEGS en Flags para indicar la presencia de la información del segmento especificada por el parámetro pPatch. Sin embargo, si el tiempo de ejecución no proporciona información de segmento en pPatch, el tiempo de ejecución debe usar en su lugar el valor de estado de representación de D3DRS_PATCHSEGMENTS.
  • Si no se ha especificado previamente un valor handle distinto de cero en una llamada anterior a la función DrawRectPa tch del controlador, el tiempo de ejecución dibuja una nueva revisión almacenable en caché. El controlador debe asignar memoria para almacenar datos almacenados en caché y agregar estos datos a su tabla de identificadores de revisión. Dado que el tiempo de ejecución no ha dibujado anteriormente esta revisión, el tiempo de ejecución debe establecer la marca RTPATCHFLAG_HASINFO y pasar un puntero a una estructura de D3DDDIRECTPATCH_INFO en el parámetro pInfo. El controlador debe comprobar la marca RTPATCHFLAG_HASINFO para comprobar la presencia de la información de revisión. Si no se especifica información de revisión, el controlador debe omitir la llamada DrawRectPatch y no debe asignar memoria para los datos almacenados en caché en su tabla de identificadores de revisión. Opcionalmente, el tiempo de ejecución puede establecer la marca RTPATCHFLAG_HASSEGS para indicar la presencia de la información del segmento. Sin embargo, si el tiempo de ejecución no proporciona información de segmento en pPatch, el tiempo de ejecución debe usar en su lugar el valor de estado de representación de D3DRS_PATCHSEGMENTS.
  • Si se ha especificado previamente un valor handle distinto de cero en una llamada anterior a la función DrawRectPa tch del controlador y se establece la marca RTPATCHFLAG_HASINFO RTPATCHFLAG_HASINFO, el tiempo de ejecución actualiza la definición de la revisión. El tiempo de ejecución pasa un puntero a una estructura de D3DDDIRECTPATCH_INFO en el parámetro pInfo, y el controlador debe volver a calcular y recuperar la información de revisión. Opcionalmente, el tiempo de ejecución puede establecer la marca RTPATCHFLAG_HASSEGS para indicar la presencia de la información del segmento. Sin embargo, si el tiempo de ejecución no proporciona información de segmento en pPatch, el tiempo de ejecución debe usar en su lugar el valor de estado de representación de D3DRS_PATCHSEGMENTS.
  • Si se ha especificado previamente un valor handle distinto de cero en una llamada anterior a la función DrawRectPatch del controlador y no se establece la marca RTPATCHFLAG_HASINFO RTPATCHFLAG_HASINFO, el tiempo de ejecución vuelve a dibujar la revisión. El controlador debe usar la información almacenada en caché para dibujar la revisión. En esta situación, el controlador omite los flujos de vértices actuales y la información almacenada en caché se usa en su lugar. Sin embargo, el tiempo de ejecución todavía puede especificar información de segmento nueva; por lo tanto, el controlador debe comprobar la marca RTPATCHFLAG_HASSEGS y controlar la información de segmento especificada incluso si usa una revisión almacenada en caché.
El controlador recibe una notificación para liberar la información de revisión almacenada en caché a través del estado de representación del D3DRS_DELETERTPATCH. El valor de este estado de representación es la revisión que se va a eliminar.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
de la plataforma de destino de Escritorio
encabezado de d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDIARG_DRAWRECTPATCH

D3DDDI_DEVICEFUNCS