我正在使用VS.Net 10和SlimDX编写代码,以便在D3DImage上呈现3D内容。它在32位Windows XP下运行良好。但是,在迁移到64位Windows 7(四核和4 GB Ram)后,相同的代码不再工作。症状是在渲染大约10或20次之后,D3DImage的IsFrontBufferAvailableChanged事件被引发,并且IsFrontBufferAvailable的属性的值为false。
我已经检查了我能想到的一切,例如RenderCapability.Tier,调用SetBackBuffer,在前台缓冲区丢失后检查设备(实际上它是DeviceEx类型),更新视频卡驱动程序(nvidia 9500 GT 1GRAM),等等。这些都不起作用。
可能导致该问题的一件事是,使用D3DImage作为源的图像控件不是在GUI线程上创建的。我正在做的是减少GUI线程的工作负载,使应用程序响应更快。当然,我一直在使用Dispatcher.Invoke来避免线程问题。同样,它在XP中也能完美地工作。
任何帮助都是非常感谢的。提前谢谢你。
发布于 2011-03-23 03:34:26
我想有一个x64版本的slimdx.dll。如果您使用的是x32版本,这可能就是问题所在。
https://stackoverflow.com/questions/5372376
复制相似问题