无法修改 C++ 中嵌入的 Python 代码中 time.time() 返回的值

发布于 2024-08-23 02:58:22 字数 481 浏览 9 评论 0原文

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

以下代码:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蹲在坟头点根烟 2024-08-30 02:58:22

在那条线索中找到了答案:
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 的某些部分假设浮点单元异常被屏蔽;揭露这些异常可能会导致未定义的行为。

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:

  • Double-precision mode will reduce Direct3D performance.
  • Portions of Direct3D assume floating-point unit exceptions are masked; unmasking these exceptions may result in undefined behavior.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文