我怎样才能衡量我的FPS ListView
?
请参阅http://code.google.com/events/io/2010/sessions/world-of-listview-android.html上的幻灯片13-17 .
在WWDC 2012 Session 506中,它们UILabel
在应用程序中显示每秒的帧数,而无需使用附加到仪器的Core Animation分析器.我想这样做是为了方便以及让我的团队中的其他成员监控FPS,因为他们在真实场景中使用该应用程序.不幸的是,会话506不包括在WWDC '12示例代码中.
有谁知道如何做到这一点?我知道Cocos2D具有这种功能CCDirector
,但他们的方法似乎特定于Cocos2D渲染的工作原理.它不必是公共API,因为我不会将此代码发送给客户.
我正在使用SpriteKit编写iOS游戏.在游戏过程中,显然是随机的,帧速率将从60 FPS降至40 FPS(总是40).我在iPhone 6上运行它.在构建发布和调试时出现错误.
我通常一次在屏幕上有大约30个节点(有时更少),大多数节点都有物理主体,但是,除了大约5个节点都dynamic
设置为NO
.上述物理主体不会相互碰撞,但它们会与玩家节点发生碰撞.播放器节点没有快速移动,并且通常一次仅触摸大约5个节点.当玩家节点与某些其他物理实体接触时,其dynamic
属性设置为YES
.值得一提的是,我有几个UIView
s和UIImageView
s覆盖顶部SKView
,充当HUD.
我觉得这不是一个特别密集的模拟.我已经完成了我的- update:
方法,操作,联系人听众等,但没有找到可能导致此问题的任何内容.我花了最近几天在仪器(时间分析器),希望它可以解决这个问题,但再次,我没有找到任何跳出来的东西.但是,我承认对仪器很新.
现在,我没办法再现这个bug.我只需要玩游戏,并希望遇到它.有时它会在场景加载(非常罕见),正常游戏过程中或根本不加载时发生.如果我暂停游戏(暂停视图和场景)并恢复它,帧速率会恢复.有时帧速率会在几秒钟后恢复正常.我完全不知道该怎么做.任何帮助将非常感激.
提前致谢.
我正在制作一个相当复杂的精灵套装游戏.我最近添加了对OS X的支持.我总是得到60 fps,无论在调整窗口大小时我的游戏是如何缩放的(即使调整大小到最大屏幕空间).但是,当我让我的应用程序进入"全屏"时,fps下降到30-40 fps并保持这种状态?但是,如果我在启用全屏时使用鼠标光标并显示菜单栏,则fps会恢复到60 fps!
你甚至可以使用默认模板在Xcode中为mac制作一个sprite kit游戏来测试这个bug.这是我拍摄的Mac默认游戏模板的屏幕截图.
我建议您自己尝试一下,如果您使用Apple的OS X默认精灵工具包模板,您甚至不必编写任何代码.
最大窗口(无FPS问题:59-60 FPS)
全屏模式(FPS降至30-40 FPS)
全屏模式鼠标在顶部显示菜单栏(令人惊讶的是,没有FPS问题:59-60 FPS)
任何人都知道可能导致这个问题的原因.如果这意味着用户将失去性能,我不想以全屏模式发布我的应用程序.你会认为全屏模式可以更好地优化绘图,但显然它恰恰相反.我在优胜美地上跑步.
在javascript中获取"window.requestAnimationFrame"回调之间时差的最佳方法是什么?
我试过了:
// create the best .requestAnimationFrame callback for each browser
window.FPS = (function() {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
function(callback) {window.setTimeout(callback, 1000 / 60);};
})();
// start animation loop
var dt, stamp = (new Date()).getTime();
function loop() {
window.FPS(loop);
var now = (new Date()).getTime();
var dt = now - stamp;
stamp = now;
}
// has "dt" the best accuracy?
Run Code Online (Sandbox Code Playgroud) 每个pygame都有一个如下所示的游戏循环:
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
print("tick " + str(pygame.time.get_ticks()))
clock.tick(1)
Run Code Online (Sandbox Code Playgroud)
根据api get_ticks()
:
返回自调用pygame.init()以来的毫秒数.在pygame初始化之前,这将始终为0.
但是clock.tick()
:
应该每帧调用一次此方法.它将计算多少.自上一次调用以来已经过了几毫秒.
如果传递可选的帧率参数,该函数将延迟以使游戏运行速度低于每秒给定的滴答数.这可以用于帮助限制游戏的运行时速度.通过每帧调用一次Clock.tick(40),程序将永远不会超过每秒40帧.
我有点困惑,这是否意味着clock.tick()
直接影响自游戏开始以来经过了多少毫秒?
所以clock.tick(40)
意味着我"发出"每秒40帧,而while循环每秒运行40次?
我没有看到fps和ticks之间的关系.
更新:我实际上只是测试了它,并且get_ticks()
仍然以mls返回实际时间,无论你给予什么fps tick() - 0.1
或者30
或者60
.
所以它似乎clock.tick()
只是设置了游戏应该运行的速度,以及循环应该自我更新的频率.
不过我还是有点困惑,欢迎其他答案.
我今天刚刚注意到,当我编译并运行一个新的XNA 4.0游戏时,其中一个CPU线程以100%运行,帧速率降至54 FPS.
奇怪的是,它有时会以60 FPS的速度运行,但之后只会下降到54 FPS.
我之前没有注意到这种行为,所以我不知道这是否正常.我卸载了我的防病毒软件并重新安装了XNA Game Studio,XNA Redistributable和.NET Framework 4.
如果我将IsFixedTimeStep设置为false,则游戏以60 FPS运行,CPU使用率最低(1-2%).但据我所知,这需要我使用ElapsedGameTime进行速度计算,但我不知道该怎么做,因为我对XNA很新.但是有人说将其设置为false可以减少抖动动画.
我已经检查了这个论坛帖子,但没有人找到一个好的解决方案.
有没有人遇到过这个问题?
编辑: 我做了一些更多的研究,我实现了一个FPS计数器(到现在为止,我用Fraps测量它),我的计数器显示比赛在60 FPS的速度运行(与IsFixedTimeStep = TRUE),所以这解决了FPS的问题,但CPU使用率仍然很高.这可能发生在每个人身上吗?
可能以前有人问过,但我找不到任何地方......
在视频领域,24 fps以及其他任何内容都很流畅.Cocos2d似乎只有在60 fps或者更低的时候才能流畅.30到50之间的任何东西肯定都不顺利,fps计数器似乎不准确......
为什么是这样?或者只有我有这种情况?
简单的问题,不确定是否有一个简单的答案!!
我能做些什么来加速我的surfaceview绘图?
我正在使用这样的东西:
c.drawBitmap(scaledSprite, X, Y, redPaint);
Run Code Online (Sandbox Code Playgroud)
我正在使用的方法必须在屏幕上绘制大约25个这些精灵,所以我使用for循环,这意味着它必须在一帧中显示25.
现在,这在我测试过的3款手机上运行得非常好,但在平板电脑上,它只是放慢速度.我已经评论了所有其他的绘图方法,只留下了这一个,这绝对是减缓游戏速度的原因.
是否有任何聪明的提示可以让我加快速度?
我知道开放GL是一种可能性,但现在大部分游戏都已编写好,所以如果我能帮助的话,我现在并不想做任何重大改变.
我正在使用新的Qt 3D API在计算密集的计算过程中显示3D场景.此场景仅作为对用户输入的响应而更改.但是,Qt 3D的默认行为似乎将场景的帧速率锁定为某个高常量值,在这种情况下会消耗不可接受的资源量.
有没有办法控制Qt 3D中的帧速率?理想情况下,我只想在对场景进行更改时渲染新帧,但将其降低到较小的固定值也足够了.Qt 3D文档很稀疏,我一直无法找到办法做这些事情.
编辑:我设法找到并将QRenderSettings :: OnDemand应用到我的根节点和帧图,但它似乎没有任何效果,虽然这意味着它应该,因为我使用的是Qt 5.7.对此的任何其他意见将是非常受欢迎的(即使它只是保证评论).
编辑2:安装Fraps并直接测量帧速率后,实际上场景似乎只是在应用了QRenderSettings :: OnDemand的情况下渲染帧.如果没有这个,帧速率将保持稳定的60fps,这恰好是我的屏幕刷新率.但是,无论是否显示3D窗口,程序在启用Qt 3D时都会继续消耗大量CPU时间.我开始认为这是一个与帧速率无关的独立Qt 3D问题,并且可能会相应地打开一个新问题.
frame-rate ×10
performance ×3
android ×2
ios ×2
sprite-kit ×2
3d ×1
c# ×1
c++ ×1
canvas ×1
cpu ×1
instruments ×1
javascript ×1
listview ×1
macos ×1
pygame ×1
pygame-clock ×1
pygame-tick ×1
python ×1
qt ×1
qt3d ×1
smooth ×1
sprite ×1
tablet ×1
time ×1
windows ×1
xna ×1