游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2296|回复: 1

时间差为什么会出现负数?

[复制链接]

15

主题

56

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2008-4-23 13:09:00 | 显示全部楼层 |阅读模式
这是游戏循环体中的代码

        static float lastTime = (float)timeGetTime();

        while(msg.message != WM_QUIT)
        {
                if(:eekMessage(&msg, 0, 0, 0, PM_REMOVE))
                {
                        ::TranslateMessage(&msg);
                        :ispatchMessage(&msg);
                }
                else
        {       
                        //static ofstream L("l.txt");
                        float currTime  = (float)timeGetTime();
                        float timeDelta = (currTime - lastTime);
                        if(timeDelta<0.0f)timeDelta=-timeDelta;
                        timeDelta *=0.001f;
                       
                        //L<<timeDelta<<endl;

                        ptr_display(timeDelta);

                        lastTime = currTime;
        }

有时候timeDelta变成负数了,如果ptr_display(timeDelta)里面绘制的东西不多的话。为什么?是double转float造成的还是内存越界访问了?

14

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2008-4-24 03:49:00 | 显示全部楼层

Re:时间差为什么会出现负数?

在多处理器的情况下,很多计时函数都会出现问题,比如CPU的RDTSC指令,Win32 API里的QueryPerformanceCounter。你这个是不是也这样就不清楚了。

http://msdn2.microsoft.com/en-us/library/bb173458.aspx

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 17:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表