Hallo,
ich verwende zurzeit folgendes Script um mein Gameserver (HL2 Engine) mit mehr als 1000FPS laufen zu lassen. Leider muss ich beim einfügen von dieser Library (später mit gcc kompiliert) FPS=XXX (XXX=Anzahl der FPS) einfügen. Ich möchte dass ich das nich kann sondern dass ich direkt in dem Script definiere wieviel FPS es sind. Wäre nett wenn ihr weiterhelfen könntet!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#include <sys/mman.h>
#include <errno.h>
#include <signal.h>
#include <math.h>
static int init = 0;
static struct timespec reg;
static int nframes = 0;
void usleep(unsigned long usec) {
//
// Catch other usleeps
//
if(usec == 0) return;
if(usec != 1000) {
struct timespec reg, rem;
reg.tv_sec = 0;
reg.tv_nsec = 1000*usec;
while(!nanosleep(®,&rem) && errno == EINTR) {
reg.tv_sec = 0;
reg.tv_nsec = rem.tv_nsec-1000;
}
return;
}
//
// This is the fps relevant case
//
if(!init) {
nframes++;
if(nframes < 2000) {
reg.tv_sec = 0;
reg.tv_nsec = 1000000;
nanosleep(®,NULL);
return;
}
nframes = 0;
init = 1;
//
int nfps;
char *envvar;
envvar = getenv("FPS");
if(envvar) {
nfps = atoi(envvar);
}
else {
nfps = 2000;
}
//
reg.tv_sec = 0;
reg.tv_nsec = 1000000000 / nfps;
}
//
// Do the sleep
//
nanosleep(®,NULL);
}
Ich denke, dass hauptsächlich folgender Teil relevant ist:
int nfps;
char *envvar;
envvar = getenv("FPS");
if(envvar) {
nfps = atoi(envvar);
}
else {
nfps = 2000;
}
Vielen Dank für eure Mühe!
MfG Roy^