下面是控制动画时间的 JS/WebGL 代码片段,其中
requestAnimFrame
通常是shim。在 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 下,您将看到动画一直播放(直到我修复它)。