Also:
Unter Windows gibt es "Sleep(x)", dabei ist x in Millisekunden, in "windows.h"
Unter *nix gibt es "sleep(x)", x in Sekunden, und "usleep(x)", x in Mikrosekunden, afaik in der "unistd.h"
Mein Code für Zeitmessung sieht so aus:
Deklaration etc.:
Code:
#if defined(_MSC_VER) || defined(_WINDOWS_)
#include <time.h>
#if !defined(_WINSOCK2API_) && !defined(_WINSOCKAPI_)
struct timeval
{
long tv_sec;
long tv_usec;
};
#endif
#else
#include <sys/time.h>
#endif
#if defined(_MSC_VER) || defined(_WINDOWS_)
int gettimeofday(struct timeval* tv, void *timezone)
{
union {
long long ns100;
FILETIME ft;
} now;
GetSystemTimeAsFileTime (&now.ft);
tv->tv_usec = (long) ((now.ns100 / 10LL) % 1000000LL);
tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL);
return (0);
}
#endif
Zeitmessung:
Code:
timeval lastframe;
gettimeofday(&lastframe, 0);
[...]
// In jedem Frame:
timeval currtime;
gettimeofday(&currtime, 0);
float frametime = currtime.tv_usec - lastframe.tv_usec;
if (frametime < 0) frametime += 1000000;
frametime /= 1000;
lastframe = currtime;
Danach enthält frametime die benötigte Zeit in Millisekunden (als Float, d.h. evtl auf Mikrosekunden genau)