aba*_*eel 5 .net c# directx slimdx
我们最近升级VS 2005到VS 2008(Windows XP).我们SlimDx在其中一个项目中使用.升级后一切正常,除了我的恢复功能,它会在devicelost/device reset上调用
D3DERR_INVALIDCALL:无效通话(-2005530516)
我使用Ctrl- Alt- Del然后Escape模拟设备丢失.
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)
{}
}
Run Code Online (Sandbox Code Playgroud)
这是否与之相关VS 2008,因为它曾经很好地与之合作VS 2005?
我在这个论坛帖子中找到了一些有用的信息.请注意该论坛上与VB相关的问题,但这仍然是一个很好的信息.完全归功于Simon O'Connor.
重新格式化并稍微编辑.
INVALIDCALL通常表示您传递给D3D的参数无效或您无法执行的操作.
找出D3D调用返回INVALIDCALL错误的原因的最简单方法是让它告诉您:
- 确保您正在使用安装了D3D运行时的DEBUG版本(安装SDK时您已获得选项).
- 确保已启用运行时的DEBUG版本.转到控制面板中的DirectX小程序,然后在Direct3D选项卡下查看.
- 在DirectX控制面板小程序中,将Direct3D的调试输出级别提高到最大值.我已经使用Visual BASIC超过10年了,所以我忘记了可用的调试支持,我没有在这台机器上安装它来检查......如果VB有一个调试输出窗口:
- 运行程序并使其失败并显示INVALIDCALL错误.
- 现在查看调试输出窗口中的所有文本.D3D将记录信息,警告以及重要的错误.它还解释了为什么D3D呼叫失败的原因.
如果VB没有简单的调试输出窗口,请从http://www.sysinternals.com下载并运行DebugView,或使用DirectX SDK附带的命令行调试查看器