首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用opengl做的游戏,将程序移植到别的电脑上,速度又得重新调整,有什么好的方法解决这个有关问题吗

2013-06-26 
用opengl做的游戏,将程序移植到别的电脑上,速度又得重新调整,有什么好的方法解决这个问题吗?RT。我用opengl

用opengl做的游戏,将程序移植到别的电脑上,速度又得重新调整,有什么好的方法解决这个问题吗?
RT。
我用opengl做了一个小游戏,语言是用c++的开发的。在我自己的电脑上调试好后,速度都弄好了,结果将程序拷到其他电脑上去,速度慢了很多,得重新再改。如果这样的话,那每次移植过去都要改很麻烦,因为我只把.exe文件给对方,对方就玩的不爽了,请教各位大神,有什么好的解决方法吗? OpenGL 游戏 c++
[解决办法]
这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行30帧/秒,有的可能120帧/秒,如果你简单的进行精灵位移,则速度块的机器,精灵的移动速度也快。

修正方法如下:
方法1、为精灵设定一个速度。每次更新画面时,计算距离上次渲染逝去了多少时间,然后用时间×速度,得到本次精灵位移的位移量。这样方法是最好的,速度块的机器上,可以更细腻,速度慢的机器上,步进大,但速度是一样的。

方法2、设置恒定的渲染时间间隔。必须限定在30帧,问题是,遇到连30帧都跑不完的破机器,就会有问题。
[解决办法]

引用:
Quote: 引用:

变慢是指变卡还是单位时间内移动的距离变慢

变卡无解,机器差没办法。

时间轴应该根据真实时间变化而不是根据帧数变化。
求教!!

你可以搜索下 跳帧

另外现在PC上 像你这种小游戏 一般不会卡的 你还是想想怎么改改程序好
[解决办法]
引用:
这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行30帧/秒,有的可能120帧/秒,如果你简单的进行精灵位移,则速度块的机器,精灵的移动速度也快。

修正方法如下:
方法1、为精灵设定一个速度。每次更新画面时,计算距离上次渲染逝去了多少时间,然后用时间×速度,得到本次精灵位移的位移量。这样方法是最好的,速度块的机器上,可以更细腻,速度慢的机器上,步进大,但速度是一样的。

方法2、设置恒定的渲染时间间隔。必须限定在30帧,问题是,遇到连30帧都跑不完的破机器,就会有问题。


很简单,这种游戏的方法就是最常见的游戏中的“垂直同步功能”。一句话总结:就是额定计算一定量的数据,再记录流逝时间:多于规定则直接pass,少了则睡眠规定时间差后再开始。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行30帧/秒,有的可能120帧/秒,如果你简单的进行精灵位移,则速度块的机器,精灵的移动速度也快。

修正方法如下:
方法1、为精灵设定一个速度。每次更新画面时,计算距离上次渲染逝去了多少时间,然后用时间×速度,得到本次精灵位移的位移量。这样方法是最好的,速度块的机器上,可以更细腻,速度慢的机器上,步进大,但速度是一样的。

方法2、设置恒定的渲染时间间隔。必须限定在30帧,问题是,遇到连30帧都跑不完的破机器,就会有问题。


很简单,这种游戏的方法就是最常见的游戏中的“垂直同步功能”。一句话总结:就是额定计算一定量的数据,再记录流逝时间:多于规定则直接pass,少了则睡眠规定时间差后再开始。
好深奥啊,我是初学者,现在做期末大作业,字体显示在窗口上,在别的电脑上会忽明忽暗,怎么解决呢?


这个问题我也不好说是什么原因造成的,所以就没有回答啊。要看具体分析啊。哈哈,没有看到你的代码,关于这样猜测也不太准。你也没有说清楚你是3D游戏还是2D游戏啊。运用了怎么样的渲染
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行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教程里拷贝的,渲染不知道是什么概念?



猜测,可能是跟你的渲染速度有关。你说新的机器可能跟不上,是不是你每次完成了一次动作就了刷新分数,太频繁,所以导致刷新速度跟不上?
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

这个问题很简单。估计你在更新游戏精灵的位置的时候,没有考虑机器运行速度的问题。有的机器可能运行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教程里拷贝的,渲染不知道是什么概念?


猜测,可能是跟你的渲染速度有关。你说新的机器可能跟不上,是不是你每次完成了一次动作就了刷新分数,太频繁,所以导致刷新速度跟不上?
是的,那不这样的话,该怎么解决呢?


不清楚,你试试调整你glPrint("Life: %d",myplanelife);这句的执行速度。

另外,你会不会使用了多线程。多线程也有影响。就从上面你贴出来的几句代码可知:取用颜色和渲染动作,是分开两个步骤的,而且使用了静态变量,必然有线程不安全性。所以opengl对于多线程天生就是不安全的。

http://developer.178.com/201101/90030072892.html

热点排行