D3DHAL_DP2DRAWRECTPATCH结构 (d3dhal.h)
仅 DirectX 8.0 及更高版本。
当 D3DHAL_DP2COMMAND 结构的 bCommand 成员设置为D3DDP2OP_DRAWRECTPATCH时,D3dDrawPrimitives2 回调从命令缓冲区分析D3DHAL_DRAWRECTPATCH,并用于呈现矩形补丁。
语法
typedef struct _D3DHAL_DP2DRAWRECTPATCH {
DWORD Handle;
DWORD Flags;
} D3DHAL_DP2DRAWRECTPATCH;
成员
Handle
指定与图面关联的句柄。
Flags
指定 DP2 流中D3DHAL_DP2DRAWRECTPATCH数据结构后面的其他信息(如果有的话)。
言论
Handle 成员用于将图面与句柄相关联,以便下次绘制此图面时,无需重新指定此修补程序的D3DRECTPATCH_INFO数据结构。 这样,驱动程序就可以预计算和缓存前向差系数和/或任何其他信息,进而允许使用同一句柄的后续D3DDP2OP_DRAWRECTPATCH令牌更高效地执行。 最新 DirectX SDK 文档中介绍了D3DRECTPATCH_INFO。
Handle 的实际值由应用程序确定,并且不受运行时控制。 因此,驱动程序应准备好应对 DWORD 可以指定的任何值。 零的特殊句柄值表示修补程序是动态的,并且没有此修补程序的预计算或缓存信息。 Handle 的子零值意味着修补程序是静态的(或使用低频率更新),并且可以进行预计算和缓存。
标志 成员用于传达 DP2 流中D3DHAL_DP2DRAWRECTPATCH数据结构之后的其他信息(如果有)。 如果指定RTPATCHFLAG_HASSEGS,则 4 个浮点值遵循 DP2 流中的D3DHAL_DP2DRAWRECTPATCH。 这些浮点为矩形补丁的四个边缘中的每一个提供段计数,并覆盖呈现状态D3DRS_PATCHSEGMENTS的值。 如果指定了RTPATCHFLAG_HASINFO,则 DP2 流中会遵循D3DRECTPATCH_INFO数据结构。 如果指定这两个标志,则指定段计数的四个浮点数遵循D3DHAL_DP2DRAWRECTPATCH,D3DRECTPATCH_INFO结构遵循浮点值。
驱动程序在处理D3DDP2OP_DRAWRECTPATCH时必须处理四种方案。
如果 句柄 为零,则修补程序是动态的,不应执行预计算或缓存。 在这种情况下,DP2 流中的D3DRECTPATCH_INFO遵循D3DHAL_DP2DRAWRECTPATCH(并将标志RTPATCHFLAG_HASINFO设置为指示存在D3DRECTPATCH_INFO数据结构)。 (可选)也可以将RTPATCHFLAG_HASSEGS设置为指示段信息是否存在。 但是,如果省略此值,则应改用呈现状态D3DRS_PATCHSEGMENTS的值。
如果 Handle 为子零,并且句柄值尚未由早期D3DDP2OP_DRAWRECTPATCH指定,则表示正在绘制新的可缓存修补程序。 驱动程序应分配内存来存储缓存的数据,并将此数据添加到其修补句柄表中。 由于以前尚未看到此修补程序,因此应设置RTPATCHFLAG_HASINFO标志,并且 DP2 流中应遵循D3DRECTPATCH_INFO结构。 但是,运行时无法保证这一点,驱动程序应通过测试标志来验证修补程序信息是否存在。 如果未指定任何信息,则应忽略此令牌,并且不应在驱动程序的修补程序句柄表中分配任何句柄。 (可选)也可以将RTPATCHFLAG_HASSEGS设置为指示段信息是否存在。 但是,如果省略此值,则应改用呈现状态D3DRS_PATCHSEGMENTS的值。
如果 句柄 为子零,则句柄值已由早期D3DDP2OP_DRAWRECTPATCH令牌指定,并且 标志 字段包含RTPATCHFLAG_HASINFO,则会更新修补程序的定义。 DP2 流中遵循D3DRECTPATCH_INFO数据结构,驱动程序应使用该结构重新计算和重新缓存修补程序信息。 (可选)也可以将RTPATCHFLAG_HASSEGS设置为指示段信息是否存在。 但是,如果省略此值,则应改用呈现状态D3DRS_PATCHSEGMENTS的值。
如果 句柄 为子零,则句柄值已由早期D3DDP2OP_DRAWRECTPATCH标记指定,并且 标志 字段不包含RTPATCHFLAG_HASINFO,则缓存的信息应用于绘制修补程序。 在这种情况下,将忽略当前顶点流;应改用缓存的信息。 但是,在这种情况下,仍可能指定新的段信息。 因此,驱动程序应检查标志RTPATCHFLAG_HASSEGS并处理指定的段信息,即使使用缓存的修补程序也是如此。
驱动程序接收通过呈现状态D3DRS_DELETERTPATCH释放缓存修补程序信息的通知。 此呈现状态的值是要删除的修补程序。
要求
要求 | 价值 |
---|---|
标头 | d3dhal.h (包括 D3dhal.h) |
另请参阅
D3DDP2OP_DRAWRECTPATCH
D3DRS_DELETERTPATCH