我面临一个非常奇怪的问题。
如下代码:
import time
target_time = time.time() + 30.0
在C ++(嵌入)调用的Python代码中不起作用!
target_time具有与time.time()相同的值,并且任何对其进行修改的尝试都会使该值在pdb控制台中保持不变。
alt text http://dl.dropbox.com/u/3545118/time_bug.png
在Ogre3D图形引擎中调用root.initialise()之后会发生这种情况,但仅在使用Direct3D时才发生,而在使用OpenGL时才发生。
所以这可能与Direct3D有关...
最佳答案
在该线程中找到答案:
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的某些部分假定浮点单元异常被屏蔽;揭露这些异常可能导致不确定的行为。