我目前正在大学做计算机游戏编程,在用C++创建物理引擎的过程中.
我被要求通过GetTickCount()方法引入一个时间步,尽管不准确,因为它适合我们进入时间步进的当前深度
我的问题是,现在我已经介绍了基于时间步长的移动,通过两个不同的更新函数覆盖来绘制屏幕的对象似乎不起作用.
通过在代码中添加断点,看起来好像mElapsedTime似乎没有传递任何值,我很难过.
很抱歉,如果这篇文章太罗嗦或有些偏离主题,我试图提供尽可能多的上下文,这是我的第一篇文章,任何帮助表示赞赏.
(frameStartTime参数只是在更新和绘制帧之前采用滴答计数)
编辑:m float类型的时间,以便在粒子类的更新中更容易相乘(例如pos.x = velocity.x*timeStep),这就是从无符号长到浮点数的转换的原因,它是否仍然是多余的?
void Simulation::gameLoopDelay(DWORD frameStartTime)
{
DWORD presetFrameInterval = 16;
DWORD frameProcessingTime = GetTickCount() - frameStartTime;
if (frameProcessingTime < presetFrameInterval)
{
Sleep(presetFrameInterval - frameProcessingTime);
}
mElapsedTime = (float)frameProcessingTime / 1000.0f;
}
Run Code Online (Sandbox Code Playgroud)