1

我在哪里可以找到有关 DirectX 11 API 中不同方法的异常安全级别的文档?

4

1 回答 1

2

C++ 中的所有 DirectX API 都不会引发 C++ 异常。除非存在某种运行时或用户模式驱动程序错误,或者调试运行时触发断点,否则它们不会生成 SEH 异常。

这就是为什么它们都返回 HRESULT 或 void。

通常,Direct3D 11 对象根据其AddRef/Release引用计数遵循标准 COM 生命周期规则,主要例外是如果设备完全释放,则从它创建的所有设备子对象立即失效。

即使不使用 C++ 异常处理,编写异常安全代码和使用Microsoft::WRL::ComPtrDirectX 11 接口对象也是一个好主意——但需要注意的是,您需要确保最终设备实例本身是最后释放/重置的.

于 2015-02-07T06:04:18.663 回答