hi.alir
شنبه 14 خرداد 1390, 11:11 صبح
من تا الان تونستم اینو بنویسم
#include <Windows.h>
class Timer
{
public:
Timer();
void Update();
float GetElapsedTime();
float GetLifeTime();
private:
LARGE_INTEGER mFreq;
LARGE_INTEGER mTime0;
LARGE_INTEGER mTime1;
LARGE_INTEGER mTimeNow;
};
inline Timer::Timer()
{
QueryPerformanceFrequency(&mFreq);
QueryPerformanceCounter(&mTime0);
QueryPerformanceCounter(&mTime1);
}
inline void Timer::Update()
{
QueryPerformanceCounter(&mTime1);
}
inline float Timer::GetElapsedTime()
{
QueryPerformanceCounter(&mTimeNow);
#ifdef _DEBUG
float deltaTime = ((mTimeNow.QuadPart - mTime1.QuadPart) / (float)mFreq.QuadPart);
if(deltaTime < 0) OutputDebugStringA("Timer error: delta time is negative!");
return deltaTime;
#else
return ((mTimeNow.QuadPart - mTime1.QuadPart) / (float)mFreq.QuadPart);
#endif
}
inline float Timer::GetLifeTime()
{
QueryPerformanceCounter(&mTimeNow);
#ifdef _DEBUG
float deltaTime = ((mTimeNow.QuadPart - mTime0.QuadPart) / (float)mFreq.QuadPart);
if(deltaTime < 0) OutputDebugStringA("Timer error: delta time is negative!");
return deltaTime;
#else
return ((mTimeNow.QuadPart - mTime0.QuadPart) / (float)mFreq.QuadPart);
#endif
}
حالا می خوام کارهایی که تو این صفحه (http://msdn.microsoft.com/en-us/library/ee417693%28v=vs.85%29.aspx) گفته شده رو انجام بدم. یعنی می خوام از SetThreadAffinityMask استفاده کنم. ولی نمی دونم کجاش باید بنویسم. یا اینکه اصلا نیاز هست که بنویسم؟ مثلا امکان داره تابع Update تو یه هسته و GetElapsedTime تو یه هسته ی دیگه انجام بشه؟
#include <Windows.h>
class Timer
{
public:
Timer();
void Update();
float GetElapsedTime();
float GetLifeTime();
private:
LARGE_INTEGER mFreq;
LARGE_INTEGER mTime0;
LARGE_INTEGER mTime1;
LARGE_INTEGER mTimeNow;
};
inline Timer::Timer()
{
QueryPerformanceFrequency(&mFreq);
QueryPerformanceCounter(&mTime0);
QueryPerformanceCounter(&mTime1);
}
inline void Timer::Update()
{
QueryPerformanceCounter(&mTime1);
}
inline float Timer::GetElapsedTime()
{
QueryPerformanceCounter(&mTimeNow);
#ifdef _DEBUG
float deltaTime = ((mTimeNow.QuadPart - mTime1.QuadPart) / (float)mFreq.QuadPart);
if(deltaTime < 0) OutputDebugStringA("Timer error: delta time is negative!");
return deltaTime;
#else
return ((mTimeNow.QuadPart - mTime1.QuadPart) / (float)mFreq.QuadPart);
#endif
}
inline float Timer::GetLifeTime()
{
QueryPerformanceCounter(&mTimeNow);
#ifdef _DEBUG
float deltaTime = ((mTimeNow.QuadPart - mTime0.QuadPart) / (float)mFreq.QuadPart);
if(deltaTime < 0) OutputDebugStringA("Timer error: delta time is negative!");
return deltaTime;
#else
return ((mTimeNow.QuadPart - mTime0.QuadPart) / (float)mFreq.QuadPart);
#endif
}
حالا می خوام کارهایی که تو این صفحه (http://msdn.microsoft.com/en-us/library/ee417693%28v=vs.85%29.aspx) گفته شده رو انجام بدم. یعنی می خوام از SetThreadAffinityMask استفاده کنم. ولی نمی دونم کجاش باید بنویسم. یا اینکه اصلا نیاز هست که بنویسم؟ مثلا امکان داره تابع Update تو یه هسته و GetElapsedTime تو یه هسته ی دیگه انجام بشه؟