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

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

Sintaxis

PFND3DDDI_DRAWTRIPATCH Pfnd3dddiDrawtripatch;

HRESULT Pfnd3dddiDrawtripatch(
  [in] HANDLE hDevice,
       const D3DDDIARG_DRAWTRIPATCH *unnamedParam2,
       const D3DDDITRIPATCH_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_DRAWTRIPATCH que describe la revisión triangular que se va a dibujar.

unnamedParam3

pInfo [in]

Opcional. Puntero a una estructura D3DDDITRIPATCH_INFO que describe información sobre la revisión triangular.

unnamedParam4

pPatch [in]

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

Valor devuelto

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

Comentarios

Cuando el tiempo de ejecución de Microsoft Direct3D llama a la función DrawTriPatch del controlador de pantalla en modo de usuario, también puede proporcionar información en los parámetros pInfo y pPatch . El tiempo de ejecución establece marcas en el miembro Flags de la estructura D3DDDIARG_DRAWTRIPATCH 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_DRAWTRIPATCH 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 D3DDDITRIPATCH_INFO para la superficie de revisión. El controlador de pantalla en modo de usuario puede calcular previamente 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 DrawTriPatch 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 especial Handle 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 DrawTriPatch :

  • 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 D3DDDITRIPATCH_INFO en el parámetro pInfo y establece la marca RTPATCHFLAG_HASINFO en el miembro Flags de la estructura D3DDDIARG_DRAWTRIPATCH para indicar la presencia de la estructura D3DDDITRIPATCH_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 de segmento especificada en 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 DrawTriPatch 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 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 a DrawTriPatch 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 DrawTriPatch 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 D3DDDITRIPATCH_INFO en el parámetro pInfo y el controlador debe volver a calcular y volver a calcular 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 DrawTriPatch del controlador y no se establece la marca 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 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_DRAWTRIPATCH

D3DDDI_DEVICEFUNCS