2015-10-06 12 views
5

Ich beabsichtige ein FabricJS-Canvas zu haben, das potentiell Dutzende verschiedener Grafiken anzeigt, die entweder als einzelne Bilddateien oder als Sprite angezeigt werden können. Für jede Grafik ist es möglich, dass eine bestimmte Grafik auf der Leinwand 0 bis dutzendfach angezeigt wird. Ich weiß, dass FabricJS die Fähigkeit clipping hat, die die Verwendung von Sprites ermöglichen würde, und ich weiß, dass Sprites im Web den einzelnen Bildern, wie etwa für CSS, in der Regel den Vorzug geben.Fabric.js Effizienz von Clipped Sprite im Vergleich zu Einzelbildern

Allerdings habe ich auch von Browserverhalten/Macken in der Umgebung von Canvas gehört, wo einige Optimierungen, die Sie erwarten könnten, nicht stattfinden - ich kann den Link im Moment nicht finden, aber einen, an den ich mich erinnere war, dass große Canvas-Content-Elemente, die in Chrome nicht sichtbar sind, immer noch eine beträchtliche Zeit benötigen, um berechnet/"gerendert" zu werden, obwohl sie für das Erscheinungsbild auf dem Bildschirm nicht relevant sind.

So sind es bekannte Erwartungen, ob n einzelne nicht-beschnittenen Bilder vorzuziehen/unvorteilhaft auf ein Sprite sein würde, die n mal für eine FabricJS Leinwand abgeschnitten wird? Falls es darauf ankommt, wäre dies keine stark animierte FabricJS-Leinwand; Dinge können sich bewegen, wenn sie zum Beispiel gezogen werden, aber konstante Animation ist in diesem Fall nicht involviert.

+0

Nach http://caniuse.com/#feat=canvas gibt es keine Clipping-Fragen (siehe bekannte Probleme Tab). Das heißt, ich denke, Sie sollten Ihre Top-3-Plattformen (Chrome, iOS und .... Android, sagen Sie ...) und einige grundlegende Leistungstests durchführen. – dsummersl

+1

@dsummersl Interessanterweise erwähnt caniuse.com ein Clipping-Problem in Android; Der Fehlerbericht, zu dem er verlinkt ist, wird als obsolet ohne klare Auflösung geschlossen. – jmq

+0

oh ja, true ... das ticket zu lesen klingt wie es ist wahrscheinlich ein problem für 1/3 von android-browsern (insgesamt grobe guatemate von http://developer.android.com/about/dashboards/index.html). – dsummersl

Antwort

0

Testen Sie selbst, um herauszufinden, was Ihren PC verlangsamt. Es kommt auf den PC und den Browser und die Grafikkarte an.

Ich weiß nichts über Fabric.js, aber Computer-CPUs und Grafikkarten können einfach mit Clipping/Grafik-Manipulation umgehen. Du zeigst keine Millionen von Polygonen wie ein 3D-Spiel, also sollte es dir gut gehen.

Hier ist eine Website, die das CSS-Sprites vs einzelnen Bilder Netzwerk-Leistung steigt, erklärt: https://medium.com/parlay-engineering/emoji-at-scale-render-performance-of-css-sprites-vs-individual-images-f0a0a2dd8039

+0

Danke, aber diese Antwort genügt nicht der Frage. Wenn es sein muss, kann ich meine eigenen Tests schreiben, ja, aber ich habe nach SO gefragt, falls es ein ausreichendes Wissen gibt, das jemand aus früheren Erfahrungen oder Tests teilen würde. Was die Anzahl der Formen anbelangt, gibt es einen merklichen Unterschied in meiner Erfahrung mit w/Fabric.js Canvas und hohen Hunderten oder niedrigen Tausenden von Elementen, so dass die Tatsache, dass ich nicht Millionen von Formen machen würde, nicht so angenehm ist, dass Sprites es sind der Weg, den man gehen sollte. – jmq