no está disponible en las últimas versiones de Internet Explorer en Windows o Chrome / Safari / Firefox en OS X 10.9. No me malinterpreten: su respuesta es perfectamente válida en un puñado de navegadores de Windows; es solo que las consultas del temporizador no están disponibles en ninguna otra plataforma WebGL en este momento: - \ WebGL / OpenGL: comparando el rendimiento
Para fines educativos, necesito comparar el rendimiento de WebGL con OpenGL. Tengo dos programas equivalentes escritos en WebGL y OpenGL, ahora necesito tomar la velocidad de fotogramas de ellos y compararlos.
En Javascript usorequestAnimationFrame
para animar, y noté que hace que la velocidad de fotogramas sea siempre a 60 FPS, y baja solo si cambio de pestaña o ventana. Por otro lado, si siempre llamo a la función de procesamiento de forma recursiva, la ventana se congela por razones obvias.
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();
Ahora, el problema si siempre tengo la escena a 60 FPS es que en realidad no puedo compararla con la velocidad de fotogramas de OpenGL, ya que OpenGL vuelve a dibujar la escena solo cuando se modifica de alguna manera (por ejemplo, si giro el objeto) yglutPostRedisplay()
se llama.
Entonces, supongo que si hay una forma en WebGL para volver a dibujar la escena solo cuando sea necesario, por ejemplo, cuando se gira el objeto o si se cambian algunos atributos en los sombreadores.