DirectX 应用程序无法通过远程桌面运行

发布于 2024-08-27 14:03:45 字数 533 浏览 9 评论 0原文

我有一个 WPF 应用程序,其中包含 DirectX 组件。该组件无法通过远程桌面运行——它只显示损坏的图像。该应用程序在不使用远程桌面时工作正常。

在尝试调试该问题时,我安装了 2010 年 2 月的 DirectX SDK。现在,当我在带有 SDK 的计算机上运行该程序并从另一台计算机对其进行远程桌面时,该组件工作得很好。然而,相反的方法是行不通的——当应用程序在没有 DirectX SDK 的计算机上运行时尝试通过远程桌面使用该应用程序(它存在图像损坏的原始问题)。

我已经比较了在我的 SDK 计算机和非 SDK 计算机上运行应用程序时加载的 DLL(使用 Process Explorer)。它们都加载相同的 DLL 版本。

还有什么可能导致这种行为?


编辑:我发现应用程序实际上正在加载不同的DLL。我没有注意到,因为我没有正确捕获DLL列表。当我使用 SDK 在计算机上运行应用程序时,它会加载 D3DREF9.dll(DirectX 参考光栅器)。尽管我仍在研究解决方案,但这给了我关于问题所在的线索。

I have a WPF application which has a DirectX component within it. This component does not work over Remote Desktop--it just shows a corrupted image. The application works fine when not using Remote Desktop.

In trying to debug the problem I installed the February 2010 DirectX SDK. Now, when I run the program on the computer with the SDK and Remote Desktop to it from a separate computer, the component works just fine. However the opposite does not work--trying to use the application over Remote Desktop when it is running on the computer without the DirectX SDK (it has the original problem with the corrupted image).

I have already compared the loaded DLLs (using Process Explorer) between running the application on my SDK machine and non-SDK machine. They both are loading the same DLL versions.

What else could be causing this behavior?


EDIT: I have discovered that the application actually is loading a different DLL. I didn't notice because I didn't capture the DLL list properly. When I run the application on the machine with the SDK it loads D3DREF9.dll, the DirectX reference rasterizer. This gives me a clue as to what the problem is, although I am still working out the solution.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

山色无中 2024-09-03 14:03:45

事实证明,我正在维护的应用程序正在尝试创建 DirectX 硬件设备,如果失败,它将尝试创建参考设备,最后,如果两者都失败,它将创建一个软件设备。

默认情况下,系统上没有可用的参考或软件渲染器。要获得参考渲染器,必须安装 DirectX SDK,并且您只能将其用于调试,而不是部署。对于软件渲染器,系统只需要.NET 3.5 SP1,然后软件必须加载它。

基本上我认为问题是软件无法正确创建渲染设备。我已经清理了初始化代码,现在它可以通过远程桌面正常呈现。

It turns out that the application that I was maintaining was attempting to create a DirectX Hardware device, and if that failed, it would attempt to create a Reference device, and finally, if both of those failed, it would create a Software device.

There is no Reference or Software renderer available on systems by default. To get a Reference renderer the DirectX SDK must be installed--and you're only supposed to use it for debugging, not deployment. For a software renderer, the system only needs .NET 3.5 SP1 and then the software must load it.

Basically I believe the problem was that the software was failing to create the rendering device properly. I've cleaned up the initialization code and it renders over Remote Desktop just fine now.

月依秋水 2024-09-03 14:03:45

尝试减少 RemDesk 中的性能/体验显示选项。我会从关闭位图缓存、减少颜色深度等开始。

Try reducing the performance/experience display options in RemDesk. I'd start with turning off Bitmap Caching, reducing the color depth, etc..

素食主义者 2024-09-03 14:03:45

本机远程桌面功能的设计禁用了 DirectX 硬件加速:http://support.microsoft.com/kb/ 260565

DirectX hardware acceleration is disabled by design for native remote desktop functionality: http://support.microsoft.com/kb/260565

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文