ist in den neuesten Versionen von Internet Explorer unter Windows oder Chrome / Safari / Firefox unter OS X 10.9 nicht verfügbar. Verstehen Sie mich nicht falsch - Ihre Antwort ist in einer Handvoll Windows-Browsern vollkommen gültig - es ist nur so, dass Timer-Abfragen derzeit auf keiner anderen WebGL-Plattform verfügbar sind: - \ WebGL / OpenGL: Vergleich der Leistung

Zu Ausbildungszwecken muss ich die Leistung von WebGL mit OpenGL vergleichen. Ich habe zwei äquivalente Programme in WebGL und OpenGL geschrieben, jetzt muss ich die Framerate von ihnen nehmen und sie vergleichen.

In Javascript verwende ichrequestAnimationFrame zu animieren, und ich bemerkte, dass es die Bildrate immer bei 60 FPS verursacht, und es geht nur, wenn ich Registerkarte oder Fenster wechseln. Wenn ich die Render-Funktion hingegen immer rekursiv aufrufe, friert das Fenster aus offensichtlichen Gründen ein.

So nehme ich die 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();

Das Problem, wenn ich die Szene immer mit 60 FPS habe, ist, dass ich sie nicht mit der Bildrate von OpenGL vergleichen kann, da OpenGL die Szene nur neu zeichnet, wenn sie irgendwie modifiziert ist (zum Beispiel, wenn ich das Objekt drehe) undglutPostRedisplay() wird gerufen.

Ich denke also, ob es in WebGL eine Möglichkeit gibt, die Szene nur dann neu zu zeichnen, wenn dies erforderlich ist, beispielsweise wenn das Objekt gedreht wird oder wenn einige Attribute in den Shadern geändert werden.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage