2

我正在使用 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 1G RAM)等。 无其中有工作。

可能导致该问题的一件事是使用 D3DImage 作为源的图像控件不是在 GUI 线程上创建的。我这样做是为了减少 GUI 线程的工作量,以使应用程序更具响应性。当然,我一直在使用 Dispatcher.Invoke 来避免线程问题。同样,它在 XP 中完美运行。

任何帮助深表感谢。先感谢您。

4

1 回答 1

0

我认为 slimdx.dll 有一个 x64 版本。如果您使用的是 x32 版本,那可能是问题所在。

于 2011-03-22T19:34:26.033 回答