Nebula2探秘04-Time Server研究
2008-06-10 12:27
176 查看
Nebula2探秘04-Time Server研究happykevins文 /****************************************************************************/
/* Nebula2 - Tutorial 04 */
/* 使用TimeServer */
/* author: happykevins */
/****************************************************************************/
///----------------------------------------------------------------------------
/// +必要头文件
#include "kernel/nkernelserver.h"
#include "kernel/ntimeserver.h"
/// -必要头文件
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +链接库
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "d_nkernel.lib")
/// -链接库
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +Application
int main(int argc, const char** argv)
{
/// 创建KernelServer
nKernelServer* ks = n_new(nKernelServer);
/// 获得TimeServer
nTimeServer* time = (nTimeServer*)ks->Lookup("/sys/servers/time");
double totaltime = 0;
double frametime = 0;
///----------------------------------------------------------------------------
/// +默认情况
ks->Print("*****Start Timer!***** ");
time->ResetTime();
time->StartTime();
while ( totaltime < 0.5f )
{
time->Trigger();
frametime = time->GetTime() - totaltime;
totaltime += frametime;
ks->Print("[FRAME:%f] ", frametime);
}
time->StopTime();
ks->Print("[TOTAL:%f] ", totaltime);
ks->Print("*****Stop Timer!***** ");
/// +默认情况
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +设置WaitDelta
/// @note:
/// 在WaitDeltaT<0.001时几乎没有什么作用
/// 在WaitDeltaT>=0.001时每一帧的间隔时间会远远大于0.001
time->WaitDeltaT(0.001f);
ks->Print("[WAIT:%fsec] ", time->GetWaitDeltaT());
ks->Print("*****Start Timer(WaitDeltaT)!***** ");
time->StartTime();
while ( totaltime < 2.0f )
{
time->Trigger();
frametime = time->GetTime() - totaltime;
totaltime += frametime;
ks->Print("[FRAME:%f] ", frametime);
}
time->StopTime();
ks->Print("[TOTAL:%f] ", totaltime);
ks->Print("*****Stop Timer(WaitDeltaT)!***** ");
/// -设置WaitDelta
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +设置LockDelta
/// @note:
/// LockDeltaT的用途是锁定帧速率
/// 在LockDeltaT>0时,每一帧将不会按照真实时间来更新
time->LockDeltaT(0.1);
ks->Print("[LOCK:%fsec] ", time->GetLockDeltaT());
ks->Print("*****Start Timer(LockDeltaT)!***** ");
time->StartTime();
while ( totaltime < 4.0f )
{
time->Trigger();
frametime = time->GetTime() - totaltime;
totaltime += frametime;
ks->Print("[FRAME:%f] ", frametime);
}
time->StopTime();
ks->Print("[TOTAL:%f] ", totaltime);
ks->Print("*****Stop Timer(LockDeltaT)!***** ");
/// +设置LockDelta
///----------------------------------------------------------------------------
/// 销毁KernelServer
n_delete(ks);
getchar();
return 0;
}
/// -Application
///----------------------------------------------------------------------------
/* Nebula2 - Tutorial 04 */
/* 使用TimeServer */
/* author: happykevins */
/****************************************************************************/
///----------------------------------------------------------------------------
/// +必要头文件
#include "kernel/nkernelserver.h"
#include "kernel/ntimeserver.h"
/// -必要头文件
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +链接库
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "d_nkernel.lib")
/// -链接库
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +Application
int main(int argc, const char** argv)
{
/// 创建KernelServer
nKernelServer* ks = n_new(nKernelServer);
/// 获得TimeServer
nTimeServer* time = (nTimeServer*)ks->Lookup("/sys/servers/time");
double totaltime = 0;
double frametime = 0;
///----------------------------------------------------------------------------
/// +默认情况
ks->Print("*****Start Timer!***** ");
time->ResetTime();
time->StartTime();
while ( totaltime < 0.5f )
{
time->Trigger();
frametime = time->GetTime() - totaltime;
totaltime += frametime;
ks->Print("[FRAME:%f] ", frametime);
}
time->StopTime();
ks->Print("[TOTAL:%f] ", totaltime);
ks->Print("*****Stop Timer!***** ");
/// +默认情况
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +设置WaitDelta
/// @note:
/// 在WaitDeltaT<0.001时几乎没有什么作用
/// 在WaitDeltaT>=0.001时每一帧的间隔时间会远远大于0.001
time->WaitDeltaT(0.001f);
ks->Print("[WAIT:%fsec] ", time->GetWaitDeltaT());
ks->Print("*****Start Timer(WaitDeltaT)!***** ");
time->StartTime();
while ( totaltime < 2.0f )
{
time->Trigger();
frametime = time->GetTime() - totaltime;
totaltime += frametime;
ks->Print("[FRAME:%f] ", frametime);
}
time->StopTime();
ks->Print("[TOTAL:%f] ", totaltime);
ks->Print("*****Stop Timer(WaitDeltaT)!***** ");
/// -设置WaitDelta
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +设置LockDelta
/// @note:
/// LockDeltaT的用途是锁定帧速率
/// 在LockDeltaT>0时,每一帧将不会按照真实时间来更新
time->LockDeltaT(0.1);
ks->Print("[LOCK:%fsec] ", time->GetLockDeltaT());
ks->Print("*****Start Timer(LockDeltaT)!***** ");
time->StartTime();
while ( totaltime < 4.0f )
{
time->Trigger();
frametime = time->GetTime() - totaltime;
totaltime += frametime;
ks->Print("[FRAME:%f] ", frametime);
}
time->StopTime();
ks->Print("[TOTAL:%f] ", totaltime);
ks->Print("*****Stop Timer(LockDeltaT)!***** ");
/// +设置LockDelta
///----------------------------------------------------------------------------
/// 销毁KernelServer
n_delete(ks);
getchar();
return 0;
}
/// -Application
///----------------------------------------------------------------------------
相关文章推荐
- Nebula2探秘04-Time Server研究
- Nebula2探秘04-Time Server研究
- Nebula2探秘04-Time Server研究
- Nebula2探秘序章:Nebula2环境配置
- Nebula2探秘06-使用Tcl脚本服务I
- Nebula2探秘附件:nutildef与nkernelinfo的代码
- Nebula2探秘01-创建KernelServer&使用log
- Nebula2探秘08-对象序列化
- Nebula2探秘10-Signal System
- Nebula2探秘12-基于Windows命令行的Nebula控制台
- Nebula2探秘01-创建KernelServer&使用log
- Nebula2探秘07-使用Tcl脚本服务II
- Nebula2探秘14-nGuiServer的创建与使用
- Nebula2探秘05-RTTI
- Nebula2探秘02-使用FileServer2
- Nebula2探秘05-RTTI
- Nebula2探秘09-IpcPeer(UDP)
- Nebula2探秘13-输入管理器nInputServer
- Nebula2探秘02-使用FileServer2
- Nebula2探秘08-对象序列化