1

我面临一个非常奇怪的问题。

以下代码:

import time
target_time = time.time() + 30.0

在从 C++(嵌入)调用的 Python 代码中不起作用!

target_time 与 time.time() 具有相同的值,并且任何修改它的尝试都会在 pdb 控制台中保持该值不变...

替代文字 http://dl.dropbox.com/u/3545118/time_bug.png

它发生在我在 Ogre3D 图形引擎中调用 root.initialise() 之后,但仅在使用 Direct3D 时发生,而不是在使用 OpenGL 时。

所以这可能与Direct3D有关......

4

1 回答 1

0

在该线程中找到了答案: 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 的部分假设浮点单元异常被屏蔽;取消屏蔽这些异常可能会导致未定义的行为。
于 2010-02-26T13:52:01.343 回答