Невозможно изменить значение, возвращаемое time.time () в коде Python, встроенном в C ++ - PullRequest
1 голос
/ 25 февраля 2010

У меня очень странная проблема.

Следующий код:

import time
target_time = time.time() + 30.0

не работает в коде Python, вызываемом из C ++ (встраивание)!

target_time имеет то же значение, что и time.time (), и любая попытка изменить его оставляет значение неизменным в консоли pdb ...

альтернативный текст http://dl.dropbox.com/u/3545118/time_bug.png

Это происходит после того, как я вызвал root.initialise () в графическом движке Ogre3D, но только при использовании Direct3D, а не при использовании OpenGL.

Так что это может быть связано с Direct3D ...

1 Ответ

0 голосов
/ 26 февраля 2010

Нашел ответ в этой теме: 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 Установите точность вычислений с плавающей точкой Direct3D равной точности, используемой вызывающим потоком. Если вы не укажете этот флаг, по умолчанию Direct3D будет использовать режим округления до ближайшей одинарной точности по двум причинам:

  • Режим двойной точности снизит производительность Direct3D.
  • В некоторых частях Direct3D предполагается, что исключения с плавающей запятой замаскированы; снятие маски с этих исключений может привести к неопределенному поведению.
...