WebGL / OpenGL: сравнение производительности
В образовательных целях мне нужно сравнить производительность WebGL с OpenGL. У меня есть две эквивалентные программы, написанные на WebGL и OpenGL, теперь мне нужно взять их частоту кадров и сравнить их.
В JavaScript я используюrequestAnimationFrame
для анимации, и я заметил, что это заставляет частоту кадров всегда быть в 60 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 кадров в секунду, состоит в том, что я не могу фактически сравнить ее с частотой кадров OpenGL, поскольку OpenGL перерисовывает сцену только тогда, когда она каким-либо образом модифицирована (например, если я вращаю объект) иglutPostRedisplay()
вызывается.
Поэтому я предполагаю, что в WebGL есть способ перерисовать сцену только тогда, когда это необходимо, например, когда объект вращается или если некоторые атрибуты в шейдерах изменены.