0

所以现在在 C++ 中,我有一个第一人称相机,控制正常,相机移动正常。但我唯一的问题是相机的速度不是预期的,让我解释一下:

(3D 场景)

10个物体->相机速度很快

1000 对象 -> 慢镜头速度


所以基本上我所做的就是像这样随着时间的推移而倍增:

Newpos += 速度 * DeltaTime;

但是当我的程序有负载时,相机速度会降低很多!那么这里发生了什么,我做错了什么?

时间码(结果看起来不错,以秒为单位):

double DeltaTime::milliseconds_now() 
{
    static LARGE_INTEGER s_frequency;
    static BOOL s_use_qpc = QueryPerformanceFrequency(&s_frequency);
    if (s_use_qpc) {
        LARGE_INTEGER now;
        QueryPerformanceCounter(&now);
        return (1000LL * now.QuadPart) / s_frequency.QuadPart;
    } else {
        return GetTickCount();
    }
}

void DeltaTime::OnStart()
{
    //ticks = (float)GetTickCount();
    QueryPerformanceFrequency( &m_liPerformanceFrequency);
}

float DeltaTime::GetDelta()
{
    return ((float)dTime/(float)1000000.0f);
}

void DeltaTime::OnFinish()
{
    if (timeFirst)
    {
        //ticks = 0;
        dTime = 0;
        timeFirst = false;
        return;
    }

    //ticks = ((float)ticks = (float)GetTickCount() - (float)ticks);
    QueryPerformanceCounter( &liPerformanceCount);
    dTime = double(liPerformanceCount.QuadPart)/double(m_liPerformanceFrequency.QuadPart);
}

框架:

void OnFrame(...)
{
 ...
 timeHandler.OnFinish();
 timeHandler.OnStart();
 ...
}

谢谢你

4

1 回答 1

0

不知何故,我两次调用 on start 函数,但现在无论如何系统都被修改了。

于 2013-04-06T21:25:25.253 回答