如何解决游戏味精循环中的计算时间
我正在使用Windows的原始Quake2游戏源代码。有一些令我有些疑问的代码。
Sys_Milliseconds函数实现( q_shwin.c ):
/*
================
Sys_Milliseconds
================
*/
int curtime;
int Sys_Milliseconds (void)
{
static int base;
static qboolean initialized = false;
if (!initialized)
{ // let base retain 16 bits of effectively random data
base = timeGetTime() & 0xffff0000;
initialized = true;
}
curtime = timeGetTime() - base;
return curtime;
}
Sys_Milliseconds函数用法( sys_win.c )-游戏主循环:
...
oldtime = Sys_Milliseconds ();
/* main window message loop */
while (1)
{
// if at a full screen console,don't update unless needed
if (Minimized || (dedicated && dedicated->value) )
{
Sleep (1);
}
while (PeekMessage (&msg,NULL,PM_NOREMOVE))
{
if (!GetMessage (&msg,0))
Com_Quit ();
sys_msg_time = msg.time;
TranslateMessage (&msg);
DispatchMessage (&msg);
}
do
{
newtime = Sys_Milliseconds ();
time = newtime - oldtime;
} while (time < 1);
// Con_Printf ("time:%5.2f - %5.2f = %5.2f\n",newtime,oldtime,time);
// _controlfp( ~( _EM_ZERODIVIDE /*| _EM_INVALID*/ ),_MCW_EM );
_controlfp( _PC_24,_MCW_PC );
Qcommon_Frame (time);
oldtime = newtime;
}
...
现在我想知道time
变量是否完全小于1?因为oldtime
总是newtime只是因为我们在newtime
之后取oldtime
!?
您能这么高兴,然后尝试向我解释一下。 谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。