用opengl做的游戏,将程序移植到别的电脑上,速度又得重新调整,有什么好的方法解决这个问题吗?
RT。
我用opengl做了一个小游戏,语言是用c++的开发的。在我自己的电脑上调试好后,速度都弄好了,结果将程序拷到其他电脑上去,速度慢了很多,得重新再改。如果这样的话,那每次移植过去都要改很麻烦,因为我只把.exe文件给对方,对方就玩的不爽了,请教各位大神,有什么好的解决方法吗? OpenGL 游戏 c++
[解决办法]
这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行30帧/秒,有的可能120帧/秒,如果你简单的进行精灵位移,则速度块的机器,精灵的移动速度也快。
修正方法如下:
方法1、为精灵设定一个速度。每次更新画面时,计算距离上次渲染逝去了多少时间,然后用时间×速度,得到本次精灵位移的位移量。这样方法是最好的,速度块的机器上,可以更细腻,速度慢的机器上,步进大,但速度是一样的。
方法2、设置恒定的渲染时间间隔。必须限定在30帧,问题是,遇到连30帧都跑不完的破机器,就会有问题。
[解决办法]
这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行30帧/秒,有的可能120帧/秒,如果你简单的进行精灵位移,则速度块的机器,精灵的移动速度也快。
修正方法如下:
方法1、为精灵设定一个速度。每次更新画面时,计算距离上次渲染逝去了多少时间,然后用时间×速度,得到本次精灵位移的位移量。这样方法是最好的,速度块的机器上,可以更细腻,速度慢的机器上,步进大,但速度是一样的。
方法2、设置恒定的渲染时间间隔。必须限定在30帧,问题是,遇到连30帧都跑不完的破机器,就会有问题。
好深奥啊,我是初学者,现在做期末大作业,字体显示在窗口上,在别的电脑上会忽明忽暗,怎么解决呢?
这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行30帧/秒,有的可能120帧/秒,如果你简单的进行精灵位移,则速度块的机器,精灵的移动速度也快。
修正方法如下:
方法1、为精灵设定一个速度。每次更新画面时,计算距离上次渲染逝去了多少时间,然后用时间×速度,得到本次精灵位移的位移量。这样方法是最好的,速度块的机器上,可以更细腻,速度慢的机器上,步进大,但速度是一样的。
方法2、设置恒定的渲染时间间隔。必须限定在30帧,问题是,遇到连30帧都跑不完的破机器,就会有问题。
很简单,这种游戏的方法就是最常见的游戏中的“垂直同步功能”。一句话总结:就是额定计算一定量的数据,再记录流逝时间:多于规定则直接pass,少了则睡眠规定时间差后再开始。
好深奥啊,我是初学者,现在做期末大作业,字体显示在窗口上,在别的电脑上会忽明忽暗,怎么解决呢?
这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行30帧/秒,有的可能120帧/秒,如果你简单的进行精灵位移,则速度块的机器,精灵的移动速度也快。
修正方法如下:
方法1、为精灵设定一个速度。每次更新画面时,计算距离上次渲染逝去了多少时间,然后用时间×速度,得到本次精灵位移的位移量。这样方法是最好的,速度块的机器上,可以更细腻,速度慢的机器上,步进大,但速度是一样的。
方法2、设置恒定的渲染时间间隔。必须限定在30帧,问题是,遇到连30帧都跑不完的破机器,就会有问题。
很简单,这种游戏的方法就是最常见的游戏中的“垂直同步功能”。一句话总结:就是额定计算一定量的数据,再记录流逝时间:多于规定则直接pass,少了则睡眠规定时间差后再开始。
这个问题我也不好说是什么原因造成的,所以就没有回答啊。要看具体分析啊。哈哈,没有看到你的代码,关于这样猜测也不太准。你也没有说清楚你是3D游戏还是2D游戏啊。运用了怎么样的渲染
if(myplanelife<0) myplanelife=0;
glColor3f(1.0f,0.0f,0.0f);
glRasterPos2f(-300.0f,200.0f);
glPrint("Life: %d",myplanelife);
glColor3f(1.0f,0.0f,0.0f);
glRasterPos2f(-winwidth/2.0f+100.0f,-winheight/2.0f+100.0f);
glPrint("Score: %d",totalScore);
在nehe教程里拷贝的,渲染不知道是什么概念?
是的,那不这样的话,该怎么解决呢? 好深奥啊,我是初学者,现在做期末大作业,字体显示在窗口上,在别的电脑上会忽明忽暗,怎么解决呢?
这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行30帧/秒,有的可能120帧/秒,如果你简单的进行精灵位移,则速度块的机器,精灵的移动速度也快。
修正方法如下:
方法1、为精灵设定一个速度。每次更新画面时,计算距离上次渲染逝去了多少时间,然后用时间×速度,得到本次精灵位移的位移量。这样方法是最好的,速度块的机器上,可以更细腻,速度慢的机器上,步进大,但速度是一样的。
方法2、设置恒定的渲染时间间隔。必须限定在30帧,问题是,遇到连30帧都跑不完的破机器,就会有问题。
很简单,这种游戏的方法就是最常见的游戏中的“垂直同步功能”。一句话总结:就是额定计算一定量的数据,再记录流逝时间:多于规定则直接pass,少了则睡眠规定时间差后再开始。
这个问题我也不好说是什么原因造成的,所以就没有回答啊。要看具体分析啊。哈哈,没有看到你的代码,关于这样猜测也不太准。你也没有说清楚你是3D游戏还是2D游戏啊。运用了怎么样的渲染
if(myplanelife<0) myplanelife=0;
glColor3f(1.0f,0.0f,0.0f);
glRasterPos2f(-300.0f,200.0f);
glPrint("Life: %d",myplanelife);
glColor3f(1.0f,0.0f,0.0f);
glRasterPos2f(-winwidth/2.0f+100.0f,-winheight/2.0f+100.0f);
glPrint("Score: %d",totalScore);
在nehe教程里拷贝的,渲染不知道是什么概念?
猜测,可能是跟你的渲染速度有关。你说新的机器可能跟不上,是不是你每次完成了一次动作就了刷新分数,太频繁,所以导致刷新速度跟不上?