ID3D12GraphicsCommandList1::SetViewInstanceMask 方法 (d3d12.h)
设置一个掩码,用于控制为后续绘图启用哪些视图实例。
语法
void SetViewInstanceMask(
[in] UINT Mask
);
参数
[in] Mask
类型: UINT
一个掩码,用于指定启用或禁用哪些视图。 如果设置了从最低有效位开始的位 i ,则启用视图实例 i 。
返回值
无
备注
视图实例掩码仅影响声明视图实例掩码的 PSO,方法是在创建期间指定D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING标志。 在不支持视图实例化的适配器上,尝试创建声明视图实例掩码的 PSO 将失败。
视图实例掩码默认为 0,这会禁用所有视图。 这会强制声明视图实例掩码的应用程序显式选择要启用的视图,否则不会呈现任何内容。 如果视图实例掩码默认启用所有视图,则应用程序可能不记得禁用未使用的视图,从而导致由于浪费工作而丢失性能。
捆绑包不会从其调用方继承其视图实例掩码,而是默认为 0。 这是因为在记录捆绑包时,如果掩码设置会影响实现记录的绘制方式,则必须知道该设置。 但是,捆绑包设置的视图实例掩码在捆绑包完成后会保留给调用方。 这些继承语义类似于 PSO 的语义。
对于屏蔽的视图实例,不会在任何着色器阶段执行依赖于SV_ViewID的着色器代码路径,并且不执行剪裁、视区处理或光栅化。 与根本不声明视图实例掩码的 PSO 一样,在呈现期间检查掩码的实现可能会产生较小的性能损失,但通常可以通过跳过与屏蔽的视图关联的工作而导致的性能节省来克服这种损失。 根据跳过工作的频率和数量,性能提升可能显著。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d12.h |