PFND3D11_1DDI_CLEARVIEW回调函数 (d3d10umddi.h)

PFND3D11_1DDI_CLEARVIEW 将资源视图中的所有元素设置为一个值。 资源视图是一个表面描述符,指示一种格式,也可能是资源的子集。

语法

PFND3D11_1DDI_CLEARVIEW Pfnd3d111DdiClearview;

void Pfnd3d111DdiClearview(
  D3D10DDI_HDEVICE hDevice,
  D3D11DDI_HANDLETYPE viewType,
  VOID *hView,
  const FLOAT Color[4],
  const D3D10_DDI_RECT *pRect,
  UINT NumRects
)
{...}

参数

hDevice

显示设备的句柄 (图形上下文) 。

viewType

D3D11DDI_HANDLETYPE类型的值,用于标识支持此清除操作的视图句柄类型。 可能的类型如下。

  • D3D10DDI_HT_RENDERTARGETVIEW
  • D3D11DDI_HT_UNORDEREDACCESSVIEW
  • 任何D3D11_1DDI_HT_VIDEOXXX 类型

hView

指向要清除的资源视图的指针。

Color[4]

pRect

资源视图中要清除的矩形的 RECT 结构的数组。 如果为 NULL,ClearView 将清除整个图面。

NumRects

pRect 参数指定的数组中的矩形数。

返回值

备注

ClearView 仅适用于呈现目标视图 (RTV) 、无序访问视图 (UAV) 或 Texture2D 图面的任何视频视图。 pRect 数组中的空矩形是 no-op。 如果顶部值等于底部值或左值等于右值,则矩形为空。

ClearView 不支持三维纹理。

ClearView 将相同的颜色值应用于视图中的所有数组切片; pRect 数组中的所有矩形都对应于每个数组切片。 矩形的 pRect 数组是在单个图面上要清除的一组区域。 如果视图是数组, ClearView 将单独清除每个数组切片上的所有矩形。

当用户模式驱动程序将矩形应用于缓冲区时,它应将顶部值设置为 0,将底部值设置为 1,并将左值和右值设置为描述缓冲区中的范围。 当顶部值等于底部值或左值等于右值时,矩形为空,实现无操作。

驱动程序应根据 Direct3D 转换规则将颜色值转换为目标格式并将其固定为目标格式。 例如,如果视图的格式为 DXGI_FORMAT_R8G8B8A8_UNORM,则将输入固定到 0.0f 到 1.0f (+INF -> 1.0f (0XFF) /NaN -> 0.0f) 。

如果格式为整数(如 DXGI_FORMAT_R8G8B8A8_UINT),则采用输入作为整型浮点数。 因此,235.0f 映射到 235 (舍入到零,范围外/INF 值固定到目标范围,NaN 映射到零) 。

下面是颜色映射:

  • Color[0]:R (或 Y 视频)
  • 颜色[1]:G (或 U/Cb 视频)
  • 颜色[2]:B (或 V/Cr 视频)
  • Color[3]: A

对于采用 YUV 或 YCbBr 格式的视频视图, ClearView 不会转换颜色值。 在格式名称不指示_UNORM、_UINT等的情况下, ClearView 假定_UINT。 因此,235.0f 映射到 235 (舍入到零,范围外/INF 值固定到目标范围,NaN 映射到零) 。

对于子采样 RTV 或 UAV 视频图面的 Microsoft Direct3D 视图,请注意,视图的尺寸取决于视图格式中的像素数,而不是视频像素的基础逻辑数量。 例如,假设图面的格式为 1920 x 1080 像素,并且 RTV 使用格式DXGI_FORMAT_R8G8B8A8_UINT。 Direct3D 视图显示为水平方向的 1920/2 = 960 R8G8B8A8 像素。 因此,在此空间中解释传递到 ClearView 的任何矩形。 此外,所有 4 个组件( R8G8B8A8)都采用清晰值,就好像它与真实 R8G8B8A8 表面没有区别。 在这种情况下,R、G、B 和 A 并不意味着标准 RGBA 颜色值;相反,它们标识内存中的位置,调用方负责了解将数据放入视频图面上下文中该位置的含义。

但是,视频图面的视频视图 (,例如提供给 CreateVideoDecoderOutputView 函数和其他 XxxInputViewXxxOutputView 函数的视图) 显示在完整的逻辑维度上。 在本例中,水平尺寸为 1920 像素宽,因此传入 ClearViewRECT 结构遵循这一点。 此类 RECT必须对齐,以便它们不跨子采样块,否则运行时将放弃对此函数的调用。 对于视频视图,必须为子采样格式适当复制 YUV 颜色。 例如, ClearView 调用中的 YUV 为 YUY2 图面中的每个块复制了 Y 值。

D3D10_DDI_RECT结构定义为 RECT 结构。

typedef RECT D3D10_DDI_RECT;

要求

要求
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
目标平台 桌面
标头 d3d10umddi.h (包括 D3d10umddi.h)

另请参阅

CreateVideoDecoderOutputView

D3D11DDI_HANDLETYPE

矩形