DirectX 11 API 和异常安全

DirectX 11 API and exception safety

有什么地方可以找到有关 DirectX 11 中不同方法的异常安全级别的文档 API?

C++ 中的

None DirectX API 将抛出 C++ 异常。它们不会生成 SEH 异常 除非 存在某种运行时或用户模式驱动程序错误,或者调试运行时触发了断点。

这就是为什么它们都是 return HRESULT 或无效的原因。

一般而言,Direct3D 11 对象遵循基于其 AddRef/Release 引用计数的标准 COM 生命周期规则,但主要的例外是,如果设备已完全释放,则从其创建的所有设备子对象将立即失效。

即使不使用 C++ 异常处理,编写异常安全代码也是一个好习惯,并且对 DirectX 11 接口对象使用 Microsoft::WRL::ComPtr 是一个好主意——需要注意的是您需要确保最终当然,设备实例本身是 released/reset 最后一个。