【发布时间】:2014-08-03 03:32:33
【问题描述】:
出于教育目的,我需要比较 WebGL 与 OpenGL 的性能。我有两个用 WebGL 和 OpenGL 编写的等效程序,现在我需要获取它们的帧速率并比较它们。
在 Javascript 中,我使用 requestAnimationFrame 进行动画处理,我注意到它会导致帧速率始终保持在 60 FPS,并且只有在我切换选项卡或窗口时才会下降。另一方面,如果我总是递归调用渲染函数,那么窗口会因为明显的原因而冻结。
这就是我参加 FPS 的方式:
var stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.left = '450px';
stats.domElement.style.top = '750px';
document.body.appendChild( stats.domElement );
setInterval( function () {
stats.begin();
stats.end();
}, 1000 / 60 );
var render= function() {
requestAnimationFrame(render);
renderer.render(scene,camera);
}
render();
如果场景总是以 60 FPS 运行,问题是我实际上无法将其与 OpenGL 的帧速率进行比较,因为 OpenGL 仅在以某种方式修改场景时(例如,如果我旋转对象)和 @ 987654323@ 被调用。
所以我猜 WebGL 中是否有一种方法可以仅在必要时重绘场景,例如当对象旋转或着色器中的某些属性发生更改时。
【问题讨论】:
标签: javascript opengl opengl-es three.js webgl