estructura D3DHAL_DP2DRAWTRIPATCH (d3dhal.h)
DirectX 8.0 y versiones posteriores solo.
D3DHAL_DRAWTRIPATCH se analiza desde el búfer de comandos mediante el D3dDrawPrimitives2 devolución de llamada cuando el miembro de D3DHAL_DP2COMMAND estructura bCommand 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.
Observaciones
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 al controlador calcular previamente y almacenar en caché los coeficientes de diferencia de reenvío 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.
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 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 se pueden calcular previamente y almacenar en caché.
El miembro Flags se usa para comunicar qué información adicional, si existe, 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 floats 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 ningún precomputation 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, RTPATCHFLAG_HASSEGS también se puede establecer para indicar la presencia de la información del segmento. Sin embargo, si se omite, el valor del estado de representación D3DRS_PATCHSEGMENTS debe usarse 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 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 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, RTPATCHFLAG_HASSEGS también se puede establecer para indicar la presencia de la información del segmento. Sin embargo, si se omite, el valor del estado de representación D3DRS_PATCHSEGMENTS debe usarse en su lugar.
Si handle es subzero, el valor de identificador se ha especificado mediante un token de D3DDP2OP_DRAWTRIPATCH anterior 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 recuperar la información de revisión. Opcionalmente, RTPATCHFLAG_HASSEGS también se puede establecer para indicar la presencia de la información del segmento. Sin embargo, si se omite, el valor del estado de representación D3DRS_PATCHSEGMENTS debe usarse en su lugar.
Si handle es subzero, el valor del identificador se ha especificado mediante un token de D3DDP2OP_DRAWTRIPATCH anterior 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 los flujos 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 |
---|---|
encabezado de | d3dhal.h (incluya D3dhal.h) |
Consulte también
D3DDP2OP_DRAWTRIPATCH
D3DRS_DELETERTPATCH