cocos2dx 帧数调整做的游戏帧数很低,请问为什么

跑分正常,玩游戏我觉得很不正常,想当初没上独显的时候在网吧,网吧的650带LOL都是166帧非常稳定。先上个配置图吧!评论上个3Dmark&11的X分图上来评论现在玩LOL大概是48-70多之间,剑灵是20多-60多之间。不知道什么情况。显卡的驱动我也已经更新了!评论
本人现时用机器如下 CPU I5 4570散片 主板 微星B85M-E45 散热 玄冰300 内存 芝奇8G DDR3-1600 硬盘 日立1TB 显卡 GTX670 刻录机 空 机箱 先马领军 电源 安钛克VP450 显示器 NEC V241WG 键盘 达尔优 终结者II代 鼠标 罗技G400S
http://service..cn/widget/qmd//90e9f3a2/7.png
求来人,我真心解决不了了
本人现时用机器如下 CPU I5 4570散片 主板 微星B85M-E45 散热 玄冰300 内存 芝奇8G DDR3-1600 硬盘 日立1TB 显卡 GTX670 刻录机 空 机箱 先马领军 电源 安钛克VP450 显示器 NEC V241WG 键盘 达尔优 终结者II代 鼠标 罗技G400S
http://service..cn/widget/qmd//90e9f3a2/7.png
求来人指导啊
本人现时用机器如下 CPU I5 4570散片 主板 微星B85M-E45 散热 玄冰300 内存 芝奇8G DDR3-1600 硬盘 日立1TB 显卡 GTX670 刻录机 空 机箱 先马领军 电源 安钛克VP450 显示器 NEC V241WG 键盘 达尔优 终结者II代 鼠标 罗技G400S
http://service..cn/widget/qmd//90e9f3a2/7.png
游戏设置锁帧了吧&我记得有这么个选项
GTX660试跑3Dmark
.cn/diy/.html
GTX660大战古墓丽影9
.cn/diy/.html
GTX660秒杀NFS17
.cn/diy/.html
看下是不是因为中文输入法,在输入法添加或者切换成美式键盘
LOL的话你确定是关了垂直同步?是的话不可能,而且你这个是670,比760还要狠点。
&发表于&01:08&游戏设置锁帧了吧&我记得有这么个选项
真没有啊,垂直同步都关掉了
本人现时用机器如下 CPU I5 4570散片 主板 微星B85M-E45 散热 玄冰300 内存 芝奇8G DDR3-1600 硬盘 日立1TB 显卡 GTX670 刻录机 空 机箱 先马领军 电源 安钛克VP450 显示器 NEC V241WG 键盘 达尔优 终结者II代 鼠标 罗技G400S
http://service..cn/widget/qmd//90e9f3a2/7.png
&发表于&09:33&LOL的话你确定是关了垂直同步?是的话不可能,而且你这个是670,比760还要狠点。
我垂直同步都关掉了,有人说是电源问题,有人说是系统问题。我觉得电源问题的话跑分不可能有这个成绩的吧!
本人现时用机器如下 CPU I5 4570散片 主板 微星B85M-E45 散热 玄冰300 内存 芝奇8G DDR3-1600 硬盘 日立1TB 显卡 GTX670 刻录机 空 机箱 先马领军 电源 安钛克VP450 显示器 NEC V241WG 键盘 达尔优 终结者II代 鼠标 罗技G400S
http://service..cn/widget/qmd//90e9f3a2/7.png
&发表于&01:13&看下是不是因为中文输入法,在输入法添加或者切换成美式键盘
这个有很大关系麽?
本人现时用机器如下 CPU I5 4570散片 主板 微星B85M-E45 散热 玄冰300 内存 芝奇8G DDR3-1600 硬盘 日立1TB 显卡 GTX670 刻录机 空 机箱 先马领军 电源 安钛克VP450 显示器 NEC V241WG 键盘 达尔优 终结者II代 鼠标 罗技G400S
http://service..cn/widget/qmd//90e9f3a2/7.png
&发表于&10:03&我垂直同步都关掉了,有人说是电源问题,有人说是系统问题。我觉得电源问题的话跑分不可能有这个成绩的吧!
电源是VP450?貌似是刚好够了,应该不是,你把GPU-Z打开,然后玩游戏,然后看后面的最大值运行在什么程度。截图看看
您需要登录后才可以发帖
其他登录方式:cocos2dx游戏性能优化之对象池
cocos2dx游戏性能优化之对象池
cocos2dx游戏性能优化之对象池
对象池机制:可回收与重复使用
手机游戏的性能对于一款手机游戏来说,那是相当的重要了,我们常说的性能呢,一般包括耗电,发热情况,流畅度,是否存在卡帧等等。从专业的角度来说,包括FPS帧数,手速侦测,CPU和内存占用率等等。那我们今天就来说一下如何通过使用对象池的机制,有效的提高内存和计算效率,从而达到提高游戏流畅度的目的。
其本质与缓存类似,即希望能减少那些频繁使用的对象的重复创建和销毁,例如飞行射击类游戏中的子弹。使用对象池机制能带来两方面的收益,首先是减少对象初始化阶段的重复计算,其次是避免反复地向操作系统申请归还内存。一个很好的例子就是捕鱼游戏中的鱼,鱼和鱼之间的属性是类似的,不一样的仅仅是当前的坐标位置及正在播放的动画帧。那么,当鱼游出屏幕后,可以不对其进行销毁,而是暂存起来。某一时刻需要重新创建鱼时,我们可以将其从对象池中取出,重新申请内存并初始化,这样就大大减轻了 CPU 的负担。
一个高效实现的对象池还要考虑如何有效地处理对象的生成和归还,以及占用内存的动态增长等问题。
代码实现如下:
** obejct pool template for create or destroy object
** by hnliu
#include "Singleton.h"
#include "Bullet.h"
template&class T&
class ObjectPool :public Singleton&ObjectPool&T&&
ObjectPool()
for (int i = 0; i & INITALCAPACITY; ++i)
auto pObj = new T();
pObj-&autorelease();
pObj-&retain();
objects.push_back(pObj);
~ObjectPool()
for (auto iter = objects.begin(); iter != objects.end(); iter++)
(*iter)-&release();
objects.clear();
//get a bullet
T* getObject()
if (objects.empty())
for (int i = 0; i & INITALCAPACITY; ++i)
auto pObj = new T();
pObj-&autorelease();
pObj-&retain();
objects.push_back(pObj);
auto obj = objects.back();
objects.pop_back();
void freeObject(T *obj)
//recycle part of pool
if (objects.size() &= (1.5 * INITALCAPACITY))
for (int i = 0; i & INITALCAPACITY / 2; ++i)
auto obj = objects.back();
obj-&release();
objects.pop_back();
obj-&reset();
objects.push_back(obj);
std::list&T*&
const int INITALCAPACITY = 256;
首先这是一个模板类,可以针对一切cocos2d::Ref的子类,使用起来也很方便,就是在初始话的地方ObjectPool::newInstance(),这样可以初始话一个鱼的对象池,对象池的构造函数中会初始化256个对象,不要忘记调用retain否则会在一帧结束后自动释放。
ObjectPool()
for (int i = 0; i & INITALCAPACITY; ++i)
auto pObj = new T();
pObj-&autorelease();
pObj-&retain();
objects.push_back(pObj);
getObject方法可以从对象池里拿一个对象,然后,再使用结束了以后要使用freeObject归还对象。
T* getObject()
if (objects.empty())
for (int i = 0; i & INITALCAPACITY; ++i)
auto pObj = new T();
pObj-&autorelease();
pObj-&retain();
objects.push_back(pObj);
auto obj = objects.back();
objects.pop_back();
getObject方法,首先会判断对象池里还有没有对象了,如果发现没有了,就一次性创建256个对象,待使用,然后freeObject的时候,也会判断对象池里如果有充裕的对象,就会释放一部分对象。
void freeObject(T *obj)
//recycle part of pool
if (objects.size() &= (1.5 * INITALCAPACITY))
for (int i = 0; i & INITALCAPACITY / 2; ++i)
auto obj = objects.back();
obj-&release();
objects.pop_back();
obj-&reset();
objects.push_back(obj);
我的热门文章
即使是一小步也想与你分享主题 : 游戏帧率过低产生的Bug
级别: 侠客
UID: 294320
可可豆: 300 CB
威望: 289 点
在线时间: 206(时)
发自: Web Page
来源于&&分类
游戏帧率过低产生的Bug&&&
做男人就下100层,pc上满帧,然后人物以某一速度下降,障碍物以某一速度上升,碰撞检测正常。但是某些手机浏览器上,帧率很低,只有10几,那么问题来了,人物还是原来速度下降,障碍物还是原来速度上升,那么由于帧率过低,这帧判断没有碰撞后,下帧已经过了碰撞区域。。。之前有在论坛发帖提问,得出结论是碰撞区域变大一点,但是这样还是不能根本解决问题。本想发布时把帧率设置为30,但是另外有贴说不要这样做。求大神解决这个问题?
UID: 300874
发帖: 2378
可可豆: 3131 CB
威望: 3189 点
在线时间: 1378(时)
发自: Web Page
尝试记录上一帧状态和下一帧状态,来判断有没有“穿过”。
级别: 侠客
UID: 294320
可可豆: 300 CB
威望: 289 点
在线时间: 206(时)
发自: Web Page
回 1楼(偶尔e网事) 的帖子
能不能详细说明下?
级别: 新手上路
可可豆: 50 CB
威望: 50 点
在线时间: 74(时)
发自: Web Page
回 2楼(q) 的帖子
方案一:你的最大每帧下降速度不大于你的底板的高度,当然 这个前提你的碰撞是人物的矩形跟地形矩形碰撞检测,那么就算你掉帧,两帧之间的最大位移也不会超过你的地形,这样就归位回去。方案二:超过地形的条件是你必须出现过在地形之间的空隙,就100层来说,你从100层到99层的条件是 你出现过在100层两个底板的空隙之间,否则则视为你从未离开过地形,那么此时就算掉帧,你的y坐标掉到下一层,但是由于检测到你没有离开过上一层的地形,那么归位。目前我的跑酷游戏这样处理的,你写好算法之后可以用cc.Director:getInstance():setAnimationInterval(0.032)(0.032是两帧之间的间隔)来模拟掉帧测试
级别: 骑士
可可豆: 417 CB
威望: 417 点
在线时间: 551(时)
发自: Web Page
出现这种bug的原因是,游戏卡时,两帧之间的时间过长,物理 引擎用了这个过长的时间来计算,导致穿越。所以解决办法是人为控制物理帧频,不要用自动,你可以把物理帧频控制放到每帧 执行里,然后固定多少毫秒执行一次。[ 此帖被zhouzhanglin在 14:31重新编辑 ]
级别: 骑士
UID: 34816
可可豆: 468 CB
威望: 587 点
在线时间: 687(时)
发自: Web Page
真机用Release版本,另外打开armv7a
UID: 262363
发帖: 1043
可可豆: 2761 CB
威望: 2231 点
在线时间: 2677(时)
发自: Web Page
通过上一帧与当前帧的坐标来判断是否穿透障碍物
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版

我要回帖

更多关于 cocos2dx lua 的文章

 

随机推荐