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 最后一个。
有什么地方可以找到有关 DirectX 11 中不同方法的异常安全级别的文档 API?
None DirectX API 将抛出 C++ 异常。它们不会生成 SEH 异常 除非 存在某种运行时或用户模式驱动程序错误,或者调试运行时触发了断点。
这就是为什么它们都是 return HRESULT 或无效的原因。
一般而言,Direct3D 11 对象遵循基于其 AddRef/Release
引用计数的标准 COM 生命周期规则,但主要的例外是,如果设备已完全释放,则从其创建的所有设备子对象将立即失效。
即使不使用 C++ 异常处理,编写异常安全代码也是一个好习惯,并且对 DirectX 11 接口对象使用 Microsoft::WRL::ComPtr
是一个好主意——需要注意的是您需要确保最终当然,设备实例本身是 released/reset 最后一个。