我使用DirectX在非托管代码中渲染图像,在WPF中使用D3DImage来托管曲面。当系统进入休眠状态时,会引发frontBufferLost事件。处理事件并销毁和重新创建所有资源。
在非托管代码中使用Direct3D9时,一切正常。引发事件后,将重新创建设备并执行渲染而不会出现任何错误。
但是当我在引擎中使用DirectX10时,由于我还需要Direct3D9设备用于Surface队列,我尝试删除并重新创建10和9设备。在这个阶段,在GetDeviceCaps调用期间,我总是得到0x8876086a,我认为设备不可用。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
通常解决此类问题的最佳方法是进入DirectX属性控制面板,切换到DirectX的调试版本,将调试输出级别一直调高,然后启动应用程序。如果在GetDeviceCaps()调用失败时在Visual Studio中观察输出窗口,您将有望看到问题。
祝你好运!