无法修改 C++ 中嵌入的 Python 代码中 time.time() 返回的值
我面临着一个非常奇怪的问题。
以下代码:
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 有关...
I'm facing a very strange problem.
The following code:
import time
target_time = time.time() + 30.0
doesn't work in Python code called from C++ (embedding)!
target_time has the same value as time.time() and any attempt to modify it leaves the value unchanged in a pdb console...
alt text http://dl.dropbox.com/u/3545118/time_bug.png
It happens after I've called root.initialise() in Ogre3D graphics engine, but only when using Direct3D, not when using OpenGL.
So this might be related to Direct3D...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在那条线索中找到了答案:
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 默认为单精度舍入到最近模式,原因有两个:
Found the answer in that thread:
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 Set the precision for Direct3D floating-point calculations to the precision used by the calling thread. If you do not specify this flag, Direct3D defaults to single-precision round-to-nearest mode for two reasons: