PFND3DDDI_CLEAR回调函数 (d3dumddi.h)
Clear 函数对呈现目标、深度缓冲区或模具缓冲区执行硬件辅助清除。
语法
PFND3DDDI_CLEAR Pfnd3dddiClear;
HRESULT Pfnd3dddiClear(
[in] HANDLE hDevice,
const D3DDDIARG_CLEAR *unnamedParam2,
UINT unnamedParam3,
const RECT *unnamedParam4
)
{...}
参数
[in] hDevice
显示设备的句柄 (图形上下文) 。
unnamedParam2
pData [in]
指向描述硬件辅助清除操作参数的 D3DDDIARG_CLEAR 结构的指针。
unnamedParam3
NumRect [in]
pRect 处数组中要清除的矩形数。 如果矩形数设置为零, Clear 应清除整个呈现目标、深度缓冲区和模具缓冲区。 在这种情况下, pRect 处的数组内容未定义,驱动程序不应尝试读取它们。
unnamedParam4
pRect [in]
RECT 结构的数组,指示驱动程序应清除的缓冲区的矩形区域。
返回值
如果未成功执行硬件辅助清除操作,Clear 将返回S_OK或适当的错误结果。
注解
驱动程序执行清除操作的方式取决于 NumRect 参数中指定的矩形区域数,以及 D3DDDIARG_CLEAR 的 Flags 成员中设置的值。 D3d8types.h 中定义的D3DCLEAR_TARGET、D3DCLEAR_STENCIL和D3DCLEAR_ZBUFFER值 () 指示要清除的缓冲区类型。 (D3dhal.h) 中定义的D3DCLEAR_COMPUTERECTS值指示如何清除缓冲区。 以下设置指示驱动程序应如何清除指定的缓冲区类型:
- 如果 NumRect 设置为 0 (NumRect== 0) 且未在 Flags 中设置D3DCLEAR_COMPUTERECTS,驱动程序将清除 0 像素 (即无操作) 。
- 如果将 NumRect 设置为 0 并在 Flags 中设置了D3DCLEAR_COMPUTERECTS,则驱动程序会清除整个视区 (而不是整个图面) 。
- 如果将 NumRect 设置为大于 0 (NumRect!= 0) 的值,并在 Flags 中设置D3DCLEAR_COMPUTERECTS,则驱动程序会根据当前视区剪裁 pRect 指定的矩形区域。
如果将 NumRect 设置为大于 0 的值 (NumRect> 0) 并在 Flags 中设置D3DCLEAR_COMPUTERECTS,则驱动程序会将指定的矩形区域剪裁到当前视区,如果应用程序以前设置D3DRS_SCISSORTESTENABLE,则驱动程序会将指定的矩形区域剪辑到剪刀矩形。 如果未设置 NumRect> 0 和 D3DCLEAR_COMPUTERECTS,则驱动程序确定 Direct3D 运行时已将指定的矩形区域剪裁到当前视区,如果应用程序以前设置D3DRS_SCISSORTESTENABLE,则剪裁到剪刀矩形。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | d3dumddi.h (包括 D3dumddi.h) |