1

我正在使用 DirectX 在非托管代码中渲染图像,并在 WPF 中使用 D3DImage 来托管表面。当系统进入睡眠状态时,会引发 frontBufferLost 事件。处理事件并销毁并重新创建所有资源。

在非托管代码中使用 Direct3D9 时,一切正常。引发事件后,将重新创建设备并执行渲染而不会出现任何错误。

但是当我在引擎中使用 DirectX10 时,由于我还需要 Direct3D9 设备来实现 Surface 队列,所以我尝试删除并重新创建 10 和 9 设备。在这个阶段,在 GetDeviceCaps 调用期间,我总是得到 0x8876086a,我认为这是设备不可用。

有人可以帮我解决这个问题吗?

4

1 回答 1

1

通常解决此类问题的最佳方法是进入 DirectX 属性控制面板,切换到 DirectX 的调试版本,将调试输出级别调高,然后启动您的应用程序。如果您在 GetDeviceCaps() 调用失败时在 Visual Studio 中查看输出窗口,您将有望看到问题所在。

祝你好运!

于 2011-08-30T23:54:28.857 回答