2010-04-01 11 views
1

J'ai une application WPF qui contient un composant DirectX. Ce composant ne fonctionne pas sur Remote Desktop - il montre juste une image corrompue. L'application fonctionne correctement lorsque vous n'utilisez pas Remote Desktop.L'application DirectX ne fonctionne pas sur le Bureau à distance

En essayant de déboguer le problème, j'ai installé le SDK DirectX de février 2010. Maintenant, lorsque j'exécute le programme sur l'ordinateur avec le SDK et le Bureau à distance à partir d'un ordinateur distinct, le composant fonctionne très bien. Cependant, le contraire ne fonctionne pas - essayer d'utiliser l'application sur le Bureau à distance lorsqu'il est exécuté sur l'ordinateur sans le SDK DirectX (il a le problème d'origine avec l'image corrompue).

J'ai déjà comparé les DLL chargées (à l'aide de Process Explorer) entre l'exécution de l'application sur mon ordinateur SDK et une machine non-SDK. Ils chargent tous les deux les mêmes versions de DLL.

Quoi d'autre pourrait provoquer ce comportement?


EDIT: J'ai découvert que l'application est en fait le chargement d'une DLL différente. Je n'ai pas remarqué parce que je n'ai pas capturé la liste de DLL correctement. Lorsque j'exécute l'application sur la machine avec le SDK, elle charge D3DREF9.dll, le rasterizer de référence DirectX. Cela me donne une idée de ce qu'est le problème, même si je travaille toujours sur la solution. Essayez de réduire les options d'affichage de performance/expérience dans RemDesk.

+0

Que diriez-vous quelques captures d'écran? (Hmm, stackoverflow at-il des facilités pour cela?) – SamB

+0

L'application est propriétaire et je ne peux pas partager de captures d'écran. SO prend en charge les images, mais vous devez les télécharger sur un service d'hébergement tiers. –

Répondre

2

Il se trouve que l'application que je maintenais essayait de créer un périphérique matériel DirectX, et si cela échouait, il essayait de créer un périphérique de référence, et enfin, si ces deux échecs, il créerait un périphérique logiciel.

Il n'y a pas de moteur de rendu de référence ou de logiciel disponible sur les systèmes par défaut. Pour obtenir un rendu de référence, le SDK DirectX doit être installé - et vous êtes seulement supposé l'utiliser pour le débogage, pas pour le déploiement. Pour un moteur de rendu logiciel, le système n'a besoin que de .NET 3.5 SP1 et le logiciel doit le charger.

Fondamentalement, je crois que le problème était que le logiciel n'arrivait pas à créer correctement le dispositif de rendu. J'ai nettoyé le code d'initialisation et le rendu sur Remote Desktop est très bien maintenant.

0

Je commencerais par éteindre la mise en cache bitmap, en réduisant la profondeur de couleur, etc.

+0

J'ai essayé de modifier la session Remote Desktop pour utiliser la couleur 16 bits et désactiver la mise en cache Bitmap, mais cela n'a pas fait de différence. –

+0

Essayez de désactiver la vidéo DirectX dans les propriétés d'affichage de la machine exécutant l'application. Ceci est utile pour des choses comme les applications de lecture de DVD qui ne peuvent pas être capturées à l'écran (sinon vous obtenez un rectangle noir). Peut-être le même problème ici. –

-1

accélération matérielle DirectX est désactivé par la conception pour la fonctionnalité de bureau à distance natif: http://support.microsoft.com/kb/260565

+0

Ceci est pour une très ancienne version de Windows. Ce n'est pas pertinent pour 2016. à moins que vous n'utilisiez Windows 2000 – ilansch