2009-02-18 6 views
3

J'ai récemment ajouté du code DirectX à mon programme, et maintenant mes variables de type double données ont seulement la plage/résolution d'un flottant (.. ou au moins moins de portée/résolution qu'avant). Si je supprime l'initialisation direct3D - "Direct3DCreate9 (D3D_SDK_VERSION)" - le problème disparaît. Un aperçu? Merci.Direct 3D affectant le type de données double

Répondre

7

Direct3D modifie l'état de la FPU pour forcer le mode de précision simple.

Si vous souhaitez conserver le mode double précision, utilisez D3DCREATE_FPU_PRESERVE lorsque vous créez le périphérique D3D. Cela aura un effet sur la performance de D3D si:

http://msdn.microsoft.com/en-us/library/bb172527(VS.85).aspx

1

Comme expliqué dans cette entrée de blog: Direct3D and the FPU, vous pouvez dire Direct3D ne pas changer le mode FPU simple précision:

Heureusement, vous pouvez éviter tout cela en disant simplement à Direct3D de ne pas jouer du tout avec la FPU. Lors de la création du périphérique, vous devez utiliser l'indicateur CreateFlags.FpuPreserve pour conserver la double précision du CLR et faire fonctionner votre code comme prévu.

Questions connexes