然后在代码的目录里新建一个名为makefile的文本文件, 内容:
# makefile for test
all: test
CC=g++
test: test.o random.o
$(CC) test.o random.o -o test
random.o: random.cpp random.h
$(CC) -c random.cpp
test.o: test.cpp
$(CC) -c test.cpp
clean:
rm -rf test *.o
# end of makefile
然后在代码目录运行make就自动编译了。 make会自己检测源文件的时间戳,在最后一次编译之后修改过的项目才会被再次编译。
运行make clean, 就可以把编译生成的文件全部清除。
嗯,虽然没有编过游戏的说,但是你的问题就是循环结束时哪个环节吃掉了14ms吧我把你的程序抄下来看下确实只有21的fps
但是把
timeStart=getTickCount()//重设开始时间
改为
timeStart+=33//33就是1000/fps
就是准确的fps=30了
总之改完之后
int Game_Main(){
static int timeStart=getTickCount()//在第一次调用函数的时候赋值
while(getTickCount()-timeStart <33)
timeStart+=33
return 1
}
说完实际的,那么来谈谈那里吃掉了10多ms吧
显然是循环最后一次的while(GetTickCount()-timeStart <1000/fps)和之后的GetTickCount()嘛
显然这之后再调用GetTickCount()得到的值比timeStart+33还大10多ms
还有不要用除法吧,没必要,毕竟fps不是30就是60,用自己设定的常数当然更快
最后说下吧,支持之前某位仁兄提到的不要过多占用CPU,至于方法如果不想自己包装Sleep的话多考虑下吧,老实说对33ms进行一次的循环我也没底...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)