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,并将左侧值和右侧值设置为描述缓冲区内的范围。 当顶部值等于底部值或左值等于右值时,矩形为空且实现 no-op。
根据 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 为零)。
下面是颜色映射:
- 颜色[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 视图,请注意,视图的尺寸基于视图格式的像素数,而不是视频像素的基础逻辑数。 例如,假设图面的格式为 YUY2,尺寸为 1920 x 1080 像素,RTV 使用格式 DXGI_FORMAT_R8G8B8A8_UINT。 视图显示为 Direct3D,因为方向为 1920/2 = 960 R8G8B8A8 像素。 因此,在此空间中解释传入 ClearView 的任何矩形。 此外,所有 4 个组件(R8G8B8A8)都采用清除值,就好像它与真正的 R8G8B8A8 图面不同。 在这种情况下,R、G、B 和 A 并不意味着标准 RGBA 颜色值;相反,它们标识内存中的某个位置,调用方负责了解将数据放入视频图面上下文中该位置意味着什么。
但是,视频图面的视频视图(如提供给 CreateVideoDecoderOutputView 函数和其他 XxxInputView 和 XxxOutputView 函数的视图)显示在完整的逻辑维度中。 在本例中,水平尺寸为 1920 像素,因此,RECT 结构传递到 ClearView。 此类 RECT必须对齐,因此它们不会跨子采样块,否则运行时将删除对此函数的调用。 对于视频视图,必须为子采样格式适当复制 YUV 颜色。 例如,ClearView 调用中的 YUV 为 YUY2 图面中的每个块复制了 Y 值。
D3D10_DDI_RECT 结构定义为 RECT 结构。
typedef RECT D3D10_DDI_RECT;
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8 |
支持的最低服务器 | Windows Server 2012 |
目标平台 | 桌面 |
标头 | d3d10umddi.h (包括 D3d10umddi.h) |