PFND3D10DDI_SETSCISSORRECTS回调函数 (d3d10umddi.h)
SetScissorRects 函数标记呈现限制的部分呈现目标。
语法
PFND3D10DDI_SETSCISSORRECTS Pfnd3d10ddiSetscissorrects;
void Pfnd3d10ddiSetscissorrects(
D3D10DDI_HDEVICE unnamedParam1,
[in] UINT NumRects,
[in] UINT ClearRects,
const D3D10_DDI_RECT *unnamedParam4
)
{...}
参数
unnamedParam1
hDevice [in]
显示设备的句柄 (图形上下文) 。
[in] NumRects
pRects 参数指定的呈现目标部分总数。
[in] ClearRects
NumScissorRects 指定要设置为 NULL 的呈现目标部分数之后的呈现目标部分数。 此数字表示以前数量的呈现目标部分 (即以前调用 SetScissorRects 的 Microsoft Direct3D 运行时) 和呈现目标部分的新数目之间的差异。
请注意, ClearScissorRects 指定的数字只是优化帮助,因为用户模式显示驱动程序可以计算此数字。
unnamedParam4
pRects [in]
要标记的呈现目标部分的 RECT 结构的数组。
返回值
无
备注
驱动程序可以使用 pfnSetErrorCb 回调函数来设置错误代码。
D3D10_DDI_RECT结构定义为 RECT 结构。
typedef RECT D3D10_DDI_RECT;
用户模式显示驱动程序必须以原子方式将所有呈现目标部分设置为一个操作。
尽管 NumScissorRects 参数指定 pRects 参数指定的数组中呈现目标部分的数目,但数组中的某些值可以为 NULL。
呈现目标部分的范围介于 NumScissorRects 指定的数字与允许的最大呈现目标部分数之间,需要包含所有 NULL 或未绑定值。 ClearScisorRects 参数指定的数字告知驱动程序,驱动程序必须清除多少个呈现目标部分才能执行当前原子操作。
如果对 SetScissorRects 的 上一次调用在 NumScissorRects 参数中传递了值 2,而当前对 SetScissorRects 的调用在 NumScissorRects 中传递值 4,则当前对 SetScissorRects 的调用也会在 ClearScissorRects 参数中传递值 0。 如果对 SetScissorRects 的下一个连续调用传递值 1(以 NumScissorRects 为单位),则连续调用还会在 ClearScissorRects 中传递值 3 (4 - 1) 。
在用户模式查询操作期间请求清除呈现目标部分的值时,该值是最大呈现目标部分数与呈现目标部分值之间的差值。
驱动程序不应遇到任何错误,D3DDDIERR_DEVICEREMOVED除外。 因此,如果驱动程序在调用 pfnSetErrorCb 函数时传递了除D3DDDIERR_DEVICEREMOVED以外的任何错误,则 Microsoft Direct3D 运行时将确定错误严重。 即使删除了设备,驱动程序也不需要返回D3DDDIERR_DEVICEREMOVED;但是,如果设备删除干扰 SetScissorRects 的操作 (通常不应) 发生,驱动程序可以返回D3DDDIERR_DEVICEREMOVED。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 操作系统中可用。 |
目标平台 | 桌面 |
标头 | d3d10umddi.h (包括 D3d10umddi.h) |