Mój projekt ma płótno HTML5, na którym wielokrotnie rysowane są obiekty graficzne. Te obiekty zmieniają się szybko. Rysowanie ich wymaga czasu. Jak mogę to przyspieszyć?Płaszczyzna HTML5: lepiej rysować ponownie obiekty lub używać bitmap?
Obiekty nie są zbyt złożone, ale zawierają elementy takie jak łuki, gradienty, wielokąty.
Wygląd obiektu zależy od około 10 właściwości, z których każda ma jedną z około 10 wartości. Oznacza to, że istnieje tylko około 100 różnych wyglądów niż obiekt może mieć. Dlatego myślę tylko o rysowaniu każdego wyglądu raz, a następnie buforowaniu mapy bitowej do ponownego użycia.
Wszystko musi działać na kliencie (czyli nie można korzystać z gotowych obrazów)
- Jaki byłby najlepszy sposób to zrobić z HTML5 Canvas?
- Czy w ogóle jest to dobry pomysł lub czy praca z bitmapami jest większa niż ponowne rysowanie obiektów za każdym razem?
Wypróbowałem twoje dema i Firefox7 na win77 Nie mogłem naprawdę zobaczyć dużej różnicy między buforowaniem a nie buforowaniem. Nadal zgadzam się z użyciem buforowania, ponieważ przy rysowaniu "obiektów" (wielokątów/gradientów) buforowanie jest DUŻO szybsze. Powód, dla którego obracanie jest o wiele szybsze podczas buforowania, wynika z obsługi renderowania api nowszych przeglądarek. – Niko
Również ten artykuł zawiera porady dotyczące wydajności płótna: http://www.html5rocks.com/en/tutorials/canvas/performance/ –
@Niko Muszę zaktualizować moje demo już całkiem stare, głównym wzrostem wydajności, jaki widzisz, jest dodanie kilkuset kolejnych na ekranie. – Loktar