DirectX 11 错误等同于 DirectX 9

DirectX 11 errors equivalent to DirectX 9

我需要一个参考来查找 DirectX 9 实现中使用的 DirectX 11 的等效错误代码,如下所示:

D3DERR_INVALIDDEVICE
D3DERR_DRIVERINVALIDCALL
D3DERR_TOOMANYOPERATIONS
D3DERR_DEVICELOST
D3DERR_DEVICENOTRESET
D3DERR_NOTAVAILABLE

我发现 winerror.h 包含所有 DXGI 错误代码,但在 DiretcX 9 中找不到上述错误的等效代码。 请帮助我查找参考或 wiki 以找到等效的错误代码。

基于 DXGI 的 Direct3D 版本没有 'lost device' 方案,只有 TDR and device removed,因此 D3DERR_DEVICELOSTD3DERR_DEVICENOTRESETD3DERR_DRIVERINTERNALERRORD3DERR_NOTAVAILABLE Direct3D 10 或更高版本永远不会发生这种情况。

Microsoft Docs 中所述,您永远不会得到 D3DERR_DRIVERINVALIDCALL

D3DERR_TOOMANYOPERATIONSD3DERR_CONFLICTINGRENDERSTATED3DERR_CONFLICTINGTEXTUREFILTER 等适用于 Direct3D 10 或更高版本不存在的旧版固定功能管道。

一些较旧的错误,如 D3DERR_UNSUPPORTEDALPHAARGD3DERR_UNSUPPORTEDALPHAOPERATION 等,与旧的遗留问题 "caps bits" 有关,这不是 Direct3D 10 或更高版本的管理方式。相反,它使用 Direct3D hardware feature levels.

在 Direct3D9 会 return D3DERR_INVALIDDEVICE 的情况下,您现在可能会 E_INVALIDARG

You may want to look at this blog post