IDXGIDevice3::Trim 方法 (dxgi1_3.h)
剪裁 IDXGIDevice3 DXGI 设备代表应用分配的图形内存。
对于使用 DirectX 呈现的应用,图形驱动程序会定期分配内部内存缓冲区,以加快后续呈现请求的速度。 这些内存分配计入应用的 PLM 内存使用量,通常会导致整个系统的内存使用量增加。
从 Windows 8.1 开始,使用 Direct2D 和/或 Direct3D ((包括 CoreWindow 和 XAML 互操作) )呈现的应用必须调用 Trim 以响应 PLM 暂停回调。 Direct3D 运行时和图形驱动程序将放弃为应用分配的内部内存缓冲区,从而减少其内存占用量。
调用此方法不会更改图形设备的呈现状态,并且不会影响呈现操作。 在 Trim 调用后的第一个呈现操作期间重新分配内部缓冲区时,会有短暂的性能下降,因此应用应仅在空闲一段时间后调用 Trim , (响应 PLM 暂停(例如) )。
应用应确保调用 Trim 作为空闲前完成的最后一个 D3D 操作之一。 Direct3D 通常会延迟 D3D 对象的销毁。 但是,调用 Trim 会强制 Direct3D 立即销毁对象。 因此,不保证在调用 Trim 后释放 Direct3D 对象上的最终引用会导致对象被销毁,并在应用暂停之前解除分配内存。
与 ID3D11DeviceContext::Flush 类似,应用应在调用 Trim 之前调用 ID3D11DeviceContext::ClearState。 ClearState 清除 Direct3D 管道绑定,确保 Direct3D 不保存对尝试发布的 Direct3D 对象的任何引用。
在调用 Trim 之前,在中间件上发布引用也是谨慎的做法,因为中间件可能还需要释放对 Direct3D 对象的引用。
语法
void Trim();
返回值
无
要求
最低受支持的客户端 | Windows 8.1 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | dxgi1_3.h |
Library | Dxgi.lib |