requestAnimationFrame计算运行时间
requestAnimationFrame computing elapsed time
下面是控制动画计时的JS/WebGL代码片段,其中requestAnimFrame
是常用的垫片。在FireFox和Safari下运行良好。在Chrome下,elapsedTime
在第2帧及以后的帧变为负值。显然(根据本文)webkitRequestAnimationFrame
没有将currentTime
参数传递给draw
回调!?!计算运行时间的正确跨浏览器方法是什么!?这太疯狂了!
var animationStartTime;
function draw(currentTime) {
requestAnimFrame(draw);
if (currentTime === undefined) {
currentTime = Date.now();
}
if (animationStartTime === undefined) {
animationStartTime = currentTime;
}
var elapsedTime = (currentTime - animationStartTime)/1000;
gl.clear(gl.COLOR_BUFFER_BIT);
drawScene(elapsedTime);
}
实际的WebGL程序在这里。在FireFox和Safari下,你会看到一个动画循环——在Chrome下,你将看到动画永远继续(直到我修复它)。
如果我说得对,你想测量渲染函数所花费的时间吗?然后你应该简单地这样做:
function draw() {
requestAnimFrame(draw);
var start = Date.now();
// perform your drawing
var elapsed = Date.now() - start;
}
但如果你需要FPS(每秒帧数),那么类似的东西就可以了:
var FPS = 0;
var ticks = 0;
var lastFPS = 0;
function draw() {
requestAnimFrame(draw);
// perform your drawing
var now = Date.now();
if (now - lastFPS >= 1000) {
lastFPS = now;
FPS = ticks;
ticks = 0;
}
ticks++;
}
相关文章:
- HTML5画布-暂停时的运行时间
- 根据时间计算运动
- 如何在Node.js中获得服务器正常运行时间
- 在JS中获取运行时间
- JQuery 选择器运行时间
- 高图表动态不同的时间计算
- 使用属性获取对象值的运行时间
- 距离 = 速率 * 时间计算
- 日期时间计算问题
- Google Apps 脚本在保护多个范围时运行时间非常慢
- 创建可重复使用的运行时计算的样式表样式
- Node.js以及如何在应用程序中获得正常运行时间/启动时间
- 使用javascript计算运行时间
- 如何格式化setInterval方法JavaScript的运行时间
- javascript中的日期时间计算库
- requestAnimationFrame计算运行时间
- 关于重构jQuery持续时间计算的建议
- 使用AJAX将客户端运行时间记录到服务器日志文件中
- 改进计算二叉树中节点值最大和的函数的运行时间
- 使用Js计算函数的平均运行时间