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 de 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.

Comentarios

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 los parámetros y pInfo . El tiempo de ejecución establece marcas en el miembro Flags 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 de D3DDDIRECTPATCH_INFO para la superficie de revisión. El controlador de pantalla en modo de usuario puede precompute y almacenar en caché los coeficientes de diferencia de avance y cualquier otra información. Por lo tanto, las llamadas posteriores a la función DrawRectPatch del controlador que usan el mismo valor de identificador de revisión se ejecutan de forma más eficaz.

El valor real de Handle viene determinado por la aplicación 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 valor de Identificador especial 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 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 de RTPATCHFLAG_HASSEGS en Marcas para indicar la presencia de la información de 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 D3DRS_PATCHSEGMENTS.
  • Si no se ha especificado previamente un valor handle distinto de cero en una llamada anterior a la función DrawRectPatch del controlador, el tiempo de ejecución dibuja una nueva revisión almacenable en caché. El controlador debe asignar memoria para almacenar los datos almacenados en caché y debe agregar estos datos a su tabla de identificadores de revisión. Dado que el tiempo de ejecución no ha dibujado previamente esta revisión, el tiempo de ejecución debe establecer la marca de 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 ninguna 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 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 se establece la marca 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 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 de 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, en su lugar, se usa la información almacenada en caché. Sin embargo, el tiempo de ejecución todavía puede especificar nueva información de segmento; 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 de D3DRS_DELETERTPATCH. El valor de este estado de representación es la revisión que se va a eliminar.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDIARG_DRAWRECTPATCH

D3DDDI_DEVICEFUNCS