SlimDX Device.Reset 崩溃并出现“D3DERR_INVALIDCALL:无效调用 (-2005530516)”错误

2023-11-26

我们最近从VS 2005 to VS 2008(Windows XP)。我们用SlimDx在我们的一个项目中。升级后一切正常,除了我的Recover函数,在 devicelost/设备重置时调用该函数,该函数会崩溃

D3DERR_INVALIDCALL:无效调用(-2005530516)

I use Ctrl-Alt-Del and then Escape to simulate device lost.

void Recover()
{
  try
     {
         if (res.Code == D3DERR_DEVICENOTRESET)
         { 
           res = m_device.Reset(m_presentParams); //Crashes on this.
           if (res.IsSuccess)
           {
             m_deviceLost = false; 
            }
          }
     }
   catch(Exception e)
   {}
 }

这与以下有关吗VS 2008,因为它曾经很好地与VS 2005?


我发现了一些有用的信息这个论坛帖子。请注意该论坛上与 VB 相关的问题,但这仍然是很好的信息。完全归功于西蒙·奥康纳.

重新格式化并稍加编辑。

INVALIDCALL 通常意味着您传递给 D3D 的参数无效或您请求的操作不可能。

找出 D3D 调用返回 INVALIDCALL 错误的原因的最简单方法是让它告诉您:

  1. 确保您使用的是已安装的 D3D 运行时的 DEBUG 版本(安装 SDK 时会提供该选项)。
  2. 确保启用了运行时的 DEBUG 版本。转到控制面板中的 DirectX 小程序,然后查看 Direct3D 选项卡下的内容。
  3. 在 DirectX 控制面板小程序中,将 Direct3D 的调试输出级别增加到最大。 我已经 10 多年没有使用 Visual BASIC,所以我忘记了有哪些调试支持可用,而且我没有在这台机器上安装它来检查...如果 VB 确实有调试输出窗口:
  4. 运行您的程序并让它失败并出现 INVALIDCALL 错误。
  5. 现在查看调试输出窗口中的所有文本。 D3D 将记录信息、警告和重要的错误。它还将解释 D3D 调用失败的原因。

如果 VB 没有简单的调试输出窗口,请从以下位置下载并运行 DebugViewhttp://www.sysinternals.com或使用 DirectX SDK 附带的命令行调试查看器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SlimDX Device.Reset 崩溃并出现“D3DERR_INVALIDCALL:无效调用 (-2005530516)”错误 的相关文章

随机推荐