Javascript 如何在WebGL中实现每秒帧数?

Javascript 如何在WebGL中实现每秒帧数?,javascript,webgl,requestanimationframe,Javascript,Webgl,Requestanimationframe,假设我在window.requestAnimFrame(somemethod)中使用WebGL在画布上绘制一些东西 如何获得每秒帧数 例如,打开此窗口,在左上角显示每秒帧数 如何使用普通JavaScript实现类似的功能?请不要使用API。在某些方法中,将全局变量计数器增加,然后将间隔添加到日志值中 setInterval(function(){ console.log('fps:'+counter); counter=0; },1000); 在某些方法中,增加全局变量计数器,然后将间隔添加到

假设我在
window.requestAnimFrame(somemethod)中使用WebGL在画布上绘制一些东西

如何获得每秒帧数

例如,打开此窗口,在左上角显示每秒帧数


如何使用普通JavaScript实现类似的功能?请不要使用API。

在某些方法中,将全局变量
计数器增加,然后将间隔添加到日志值中

setInterval(function(){ console.log('fps:'+counter); counter=0; },1000);

在某些方法中,增加全局变量
计数器
,然后将间隔添加到日志值

setInterval(function(){ console.log('fps:'+counter); counter=0; },1000);

setInterval
不准确,如果工作繁重,可能会延迟和/或堆叠,只需使用传递给请求动画帧回调的时间戳即可

var prev = 0;
requestAnimationFrame(function (now) {
    var delta = now - prev;
    var fps = 1000 / delta;
    prev = now;
    // render logic
});

setInterval
不准确,如果工作繁重,可能会延迟和/或堆叠,只需使用传递给请求动画帧回调的时间戳即可

var prev = 0;
requestAnimationFrame(function (now) {
    var delta = now - prev;
    var fps = 1000 / delta;
    prev = now;
    // render logic
});

计时器如何与WebGL每秒绘制的帧数相关联?每个绘制调用都是由window.requestAnimFramer somemethod()完成的,因此,如果您有一个变量,则在一秒钟后每次绘制调用都会增加,您只需查看调用somemethodYup的次数,就可以了。一开始我不明白你的回答是什么意思,谢谢你的澄清。LJ的答案和这个答案看起来都很有希望,但我应该接受哪一个作为正确答案?@subffyu546754不接受答案可能是你能做的最糟糕的事情;)计时器如何与WebGL每秒绘制的帧数相关联?每个绘制调用都是由window.requestAnimFramer somemethod()完成的,因此,如果您有一个变量,则在一秒钟后每次绘制调用都会增加,您只需查看调用somemethodYup的次数,就可以了。一开始我不明白你的回答是什么意思,谢谢你的澄清。LJ的答案和这个答案看起来都很有希望,但我应该接受哪一个作为正确答案?@subffyu546754不接受答案可能是你能做的最糟糕的事情;)现在是什么?这是一个预定义的数字。我可能会接受这个-更优雅,现在是一个时间戳什么是现在?这是一个预定义的数字。我可能会接受这个-更优雅,现在是一个时间戳