2010-02-25 6 views
1

Je suis confronté à un problème très étrange.Impossible de modifier la valeur renvoyée par time.time() dans le code Python intégré dans C++

Le code suivant:

import time 
target_time = time.time() + 30.0 

ne fonctionne pas dans le code Python appelé de C++ (enrobage)!

target_time a la même valeur que time.time() et toute tentative de modifier laisse la valeur inchangée dans une console pdb ...

alt text http://dl.dropbox.com/u/3545118/time_bug.png

Il arrive après que je l'ai appelé racine. initialise() dans le moteur graphique Ogre3D, mais uniquement lors de l'utilisation de Direct3D, pas lors de l'utilisation d'OpenGL.

Donc cela pourrait être lié à Direct3D ...

Répondre

0

trouvé la réponse dans ce fil: http://www.ogre3d.org/forums/viewtopic.php?f=1&t=55013&p=373940&hilit=D3DCREATE_FPU_PRESERVE#p373940

http://msdn.microsoft.com/en-us/library/ee416457%28VS.85%29.aspx

D3DCREATE_FPU_PRESERVE définir la précision pour Direct3D calculs à virgule flottante à la précision utilisée par le thread appelant. Si vous ne spécifiez pas cet indicateur, Direct3D utilise par défaut le mode arrondi à la précision la plus proche pour deux raisons:

  • Le mode double précision réduit les performances de Direct3D.
  • Des portions de Direct3D supposent que les exceptions d'unité à virgule flottante sont masquées; démasquer ces exceptions peut entraîner un comportement indéfini.
Questions connexes