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_CLEARFlags 成员中设置的值。 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 指定的矩形区域。
剪刀测试还影响驱动程序执行清除操作的方式。 应用程序在调用 IDirect3DDevice9::SetRenderState 方法时设置D3DRS_SCISSORTESTENABLE呈现状态,以启用 scissor 测试。 有关剪刀测试的详细信息,请参阅 剪刀测试。 如果设置了D3DRS_SCISSORTESTENABLE呈现状态并设置了D3DCLEAR_COMPUTERECTS标志,则驱动程序必须将 pRect 指定的矩形区域剪裁到剪刀矩形区域。

如果将 NumRect 设置为大于 0 的值 (NumRect> 0) 并在 Flags 中设置D3DCLEAR_COMPUTERECTS,则驱动程序会将指定的矩形区域剪裁到当前视区,如果应用程序以前设置D3DRS_SCISSORTESTENABLE,则驱动程序会将指定的矩形区域剪辑到剪刀矩形。 如果未设置 NumRect> 0 和 D3DCLEAR_COMPUTERECTS,则驱动程序确定 Direct3D 运行时已将指定的矩形区域剪裁到当前视区,如果应用程序以前设置D3DRS_SCISSORTESTENABLE,则剪裁到剪刀矩形。

要求

要求
目标平台 桌面
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

矩形