requestAnimFrame
以下は、通常のshimであるアニメーションのタイミングを制御する JS/WebGL コードのスニペットです
。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 では、アニメーションが永遠に続きます (修正するまで)。