2011-03-20 3 views
2

J'écris du code en utilisant VS.Net 10 et SlimDX pour rendre le contenu 3D sur un D3DImage. Il fonctionne parfaitement sous 32 bits Windows XP. Cependant, après la migration vers Windows 7 64 bits (quad core et 4 Go Ram), le même code ne fonctionne plus. Le symptôme est qu'après avoir rendu environ 10 ou 20 fois, l'événement IsFrontBufferAvailableChanged de D3DImage est déclenché et la propriété de IsFrontBufferAvailable a la valeur false.WPF D3DImage perd le tampon avant

J'ai vérifié tout ce que je peux penser, par exemple. RenderCapability.Tier, appelant SetBackBuffer, vérifiant le périphérique (en fait c'est le type DeviceEx) après la perte du buffer avant, mettant à jour le pilote de la carte vidéo (nvidia 9500 GT 1G RAM), etc. Aucun d'entre eux n'a fonctionné. Une chose qui peut contribuer au problème est que le contrôle de l'image qui utilise D3DImage comme source n'est pas créé sur le thread d'interface graphique. Je fais pour réduire la charge de travail du thread graphique pour rendre l'application plus réactive. Bien sûr, j'ai utilisé Dispatcher.Invoke pour éviter les problèmes de threading. Encore une fois, cela fonctionne parfaitement sous XP.

Toute aide est très appréciée. Merci d'avance.

Répondre

0

Je pense qu'il existe une version x64 de slimdx.dll .. si vous utilisez la version x32, cela pourrait être le problème.

+0

Essayé versions 32 bits et 64 bits, essayé Toutes les configurations PC, x86, x64 et plate-forme mixte et essayé beaucoup d'autres choses. Aucun ne fonctionne. :( – Rapido

Questions connexes