Compartir a través de


estructura D3DHAL_DP2DRAWRECTPATCH (d3dhal.h)

DirectX 8.0 y versiones posteriores solo.

D3DHAL_DRAWRECTPATCH 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_DRAWRECTPATCH y se usa para representar una revisión rectangular.

Sintaxis

typedef struct _D3DHAL_DP2DRAWRECTPATCH {
  DWORD Handle;
  DWORD Flags;
} D3DHAL_DP2DRAWRECTPATCH;

Miembros

Handle

Especifica el identificador asociado a la superficie.

Flags

Especifica qué, si existe, información adicional sigue la estructura de datos D3DHAL_DP2DRAWRECTPATCH 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 D3DRECTPATCH_INFO para esta revisión. Esto permite que el controlador precompute y almacene en caché los coeficientes de diferencia hacia delante o cualquier otra información, lo que a su vez permite que los tokens de D3DDP2OP_DRAWRECTPATCH posteriores usen el mismo identificador para ejecutarse de forma más eficaz. D3DRECTPATCH_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 que pueda especificar 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_DP2DRAWRECTPATCH en la secuencia DP2. Si se especifica RTPATCHFLAG_HASSEGS, cuatro valores de punto flotante siguen D3DHAL_DP2DRAWRECTPATCH en la secuencia DP2. Estos floats proporcionan los recuentos de segmentos para cada uno de los cuatro bordes de la revisión rectangular e invalidan el valor del estado de representación D3DRS_PATCHSEGMENTS. Si se especifica RTPATCHFLAG_HASINFO, se sigue una estructura de datos D3DRECTPATCH_INFO en la secuencia DP2. Si se especifican ambas marcas, los cuatro valores flotantes que especifican recuentos de segmentos siguen D3DHAL_DP2DRAWRECTPATCH y la estructura de D3DRECTPATCH_INFO sigue los valores de punto flotante.

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

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 D3DRECTPATCH_INFO sigue D3DHAL_DP2DRAWRECTPATCH en la secuencia DP2 (y la marca RTPATCHFLAG_HASINFO se establece para indicar la presencia de la estructura de datos D3DRECTPATCH_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_DRAWRECTPATCH 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 D3DRECTPATCH_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_DRAWRECTPATCH 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 D3DRECTPATCH_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_DRAWRECTPATCH 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_DRAWRECTPATCH

D3DHAL_DP2COMMAND

D3DHAL_DP2DRAWTRIPATCH

D3DRS_DELETERTPATCH

D3dDrawPrimitives2