Compartir a través de


estructura D3DHAL_DP2DRAWTRIPATCH (d3dhal.h)

DirectX 8.0 y versiones posteriores solo.

D3DHAL_DRAWTRIPATCH se analiza desde el búfer de comandos mediante la devolución de llamada D3dDrawPrimitives2 cuando el miembro bCommand de la estructura D3DHAL_DP2COMMAND se establece en D3DDP2OP_DRAWTRIPATCH y se usa para representar una revisión triangular.

Sintaxis

typedef struct _D3DHAL_DP2DRAWTRIPATCH {
  DWORD Handle;
  DWORD Flags;
} D3DHAL_DP2DRAWTRIPATCH;

Miembros

Handle

Especifica el identificador asociado a la superficie.

Flags

Especifica qué, si existe, información adicional sigue la estructura de datos D3DHAL_DP2DRAWTRIPATCH en la secuencia DP2.

Comentarios

El miembro Handle se usa para asociar la superficie a un identificador, de modo que la próxima vez que se dibuje esta superficie no es necesario volver a especificar la estructura de datos D3DTRIPATCH_INFO para esta revisión. Esto permite que el controlador precompute y almacene en caché los coeficientes de diferencia hacia delante y/o cualquier otra información, lo que, a su vez, permite que los tokens de D3DDP2OP_DRAWTRIPATCH posteriores usen el mismo identificador para ejecutarse de forma más eficaz. D3DTRIPATCH_INFO se describe en la documentación más reciente del SDK de DirectX.

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 estar preparado para hacer frente a cualquier valor especificado por un DWORD. El valor de identificador especial de cero significa que la revisión es dinámica y no hay información de precomputing ni almacenamiento en caché de punto para esta revisión. Un valor de subzero para Handle significa que la revisión es estática (o actualizada con baja frecuencia) y la precomputación y el almacenamiento en caché son posibles.

El miembro Flags se usa para comunicar qué, si existe, información adicional sigue la estructura de datos D3DHAL_DP2DRAWTRIPATCH en la secuencia DP2. Si se especifica RTPATCHFLAG_HASSEGS, tres valores de punto flotante siguen D3DHAL_DP2DRAWTRIPATCH en la secuencia DP2. Estos float proporcionan los recuentos de segmentos para cada uno de los tres bordes de la revisión triangular e invalidan el valor del estado de representación D3DRS_PATCHSEGMENTS. Si se especifica RTPATCHFLAG_HASINFO, se sigue una estructura de datos D3DTRIPATCH_INFO en la secuencia DP2. Si se especifican ambas marcas, los tres valores flotantes que especifican recuentos de segmentos siguen D3DHAL_DP2DRAWTRIPATCH y la estructura de D3DTRIPATCH_INFO sigue los valores de punto flotante.

Hay cuatro escenarios que un controlador debe controlar al procesar D3DDP2OP_DRAWTRIPATCH.

Si Handle es cero, la revisión es dinámica y no se debe realizar ninguna precomputación o almacenamiento en caché. En este caso, un D3DTRIPATCH_INFO sigue D3DHAL_DP2DRAWTRIPATCH en la secuencia DP2 (y la marca RTPATCHFLAG_HASINFO se establece para indicar la presencia de la estructura de datos D3DTRIPATCH_INFO). Opcionalmente, también se puede establecer RTPATCHFLAG_HASSEGS para indicar la presencia de la información del segmento. Sin embargo, si se omite, se debe usar el valor del estado de representación D3DRS_PATCHSEGMENTS en su lugar.

Si Handle es subzero y un D3DDP2OP_DRAWTRIPATCH anterior no ha especificado el valor del identificador, esto indica que se está dibujando una nueva revisión almacenable en caché. El controlador debe asignar memoria para almacenar los datos almacenados en caché y agregar estos datos a su tabla de identificadores de revisión. Dado que esta revisión no se ha visto antes, se debe establecer la marca RTPATCHFLAG_HASINFO y debe seguir una estructura de D3DTRIPATCH_INFO en la secuencia DP2. Sin embargo, el tiempo de ejecución no garantiza esto y el controlador debe comprobar la presencia de la información de revisión probando la marca . Si no se especifica información, este token debe omitirse y no se debe asignar ningún identificador en la tabla de identificadores de revisión del controlador. Opcionalmente, también se puede establecer RTPATCHFLAG_HASSEGS para indicar la presencia de la información del segmento. Sin embargo, si se omite, se debe usar el valor del estado de representación D3DRS_PATCHSEGMENTS en su lugar.

Si Handle es subzero, un token de D3DDP2OP_DRAWTRIPATCH anterior ha especificado el valor del identificador y el campo Flags contiene RTPATCHFLAG_HASINFO, se actualiza la definición de la revisión. Una estructura de datos D3DTRIPATCH_INFO sigue en la secuencia DP2 y el controlador debe usarlo para volver a calcular y volver a calcular la información de revisión. Opcionalmente, también se puede establecer RTPATCHFLAG_HASSEGS para indicar la presencia de la información del segmento. Sin embargo, si se omite, se debe usar el valor del estado de representación D3DRS_PATCHSEGMENTS en su lugar.

Si Handle es subzero, un token de D3DDP2OP_DRAWTRIPATCH anterior ha especificado el valor del identificador y el campo Flags no contiene RTPATCHFLAG_HASINFO, se debe usar la información almacenada en caché para dibujar la revisión. En este caso, se omiten las secuencias de vértices actuales; En su lugar, se debe usar la información almacenada en caché. Sin embargo, todavía es posible en este caso especificar una 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 se usa una revisión almacenada en caché.

El controlador recibe una notificación de que la información de revisión almacenada en caché se libera 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 Valor
Header d3dhal.h (incluya D3dhal.h)

Consulte también

D3DDP2OP_DRAWTRIPATCH

D3DHAL_DP2COMMAND

D3DHAL_DP2DRAWRECTPATCH

D3DRS_DELETERTPATCH

D3dDrawPrimitives2