Thread View: pl.comp.www
6 messages
6 total messages
Started by Marek S
Sat, 11 Aug 2018 21:57
Dlaczego dominuje canvas nad svg?
Author: Marek S
Date: Sat, 11 Aug 2018 21:57
Date: Sat, 11 Aug 2018 21:57
36 lines
2453 bytes
2453 bytes
Witam, Gdy patrzę na strony z jakimiś grami, rysowaniem czegoś tam i generalnie używa się canvas, sporadycznie SVG. Zapewne czegoś nie wiem więc wytłumaczcie mi to. Poniżej moje przemyślenia, być może fałszywe. Canvas nie jest w żaden sposób interaktywne z tym co zostało narysowane na nim. Np. gdy narysujemy 2 prostokąty, to nie wiadomo, który z nich został kliknięty. W SVG każdy obiekt ma swoją obsługę zdarzeń (podobną do elementów HTML) więc może oprogramowanie interakcji z użytkownikiem jest banalne. W canvas aby wykonać przemieszczenie jakiegokolwiek obiektu trzeba narysować wszystko od początku plus przemieszczony obiekt. W SVG możemy dowolnie poruszać obiektem bez odrysowywania czegokolwiek. Canvas to bitmapa więc nie jest skalowalna. SVG to wektor. Wydaje mi się, że canvas jest fajne gdy chcemy narysować słupki prezentujące dane np. z Excela, choć to samo i w SVG można osiągnąć bez przyrostu nakładu pracy. Nawet narzędzie Adobe Animation, które miało zstąpić Flasha bazuje na canvas. I to pomimo bliźniaczego podobieństwa technologii Flash i SVG, Adobe zdecydował się na bazowanie na nieinterakcyjnym canvas. Czy z tego wynika, że SVG jest umierającą technologią? Niby W3C po wielu latach ignorowania technologii SVG pierdnęło w lipcu 2018 coś na temat wersji 2.0 lecz wniosek stąd płynący jest taki, że jest to technologia a'la kula u nogi. W przeglądarkach podstawowa funkcja drag and drop supportowana jest tylko przez Edge. To też dowodzi niszowości SVG. Dlaczego tak? -- Pozdrawiam, Marek
Re: Dlaczego dominuje canvas nad svg?
Author: Roman Tyczka
Date: Sun, 12 Aug 2018 09:24
Date: Sun, 12 Aug 2018 09:24
14 lines
1186 bytes
1186 bytes
On Sat, 11 Aug 2018 23:57:00 +0200, Marek S wrote: > Gdy patrzę na strony z jakimiś grami, rysowaniem czegoś tam i generalnie > używa się canvas, sporadycznie SVG. Zapewne czegoś nie wiem więc > wytłumaczcie mi to. Poniżej moje przemyślenia, być może fałszywe. [..] > Dlaczego tak? Nie wiem, ale się wypowiem :-P Pewnie chodzi o wydajność. -- pozdrawiam Roman Tyczka
Re: Dlaczego dominuje canvas nad svg?
Author: szykcech
Date: Sun, 12 Aug 2018 12:06
Date: Sun, 12 Aug 2018 12:06
3 lines
1904 bytes
1904 bytes
> Dlaczego tak? Wiele "dobrze rokujących" technologii zostało zaoranych tylko z tego względu, że było realnymi odpowiednikami technologii kosmitów (tych złych, czyli Ufoli). Tak było z Amigą, Xhtml, MathMl, C++ i Qt (jeszcze żyje... - ciekawe jak długo). Generalnie jest tak, że jak coś jest "dobre" to nie wystarczy i trzeba wpakować w upowszechnienie standardu drugie tyle wysiłku (a może jeszcze więcej) niż wymagało opracowanie danej technologii.
Re: Dlaczego dominuje canvas nad svg?
Author: Marek S
Date: Sun, 12 Aug 2018 19:45
Date: Sun, 12 Aug 2018 19:45
16 lines
1441 bytes
1441 bytes
W dniu 2018-08-12 o 11:24, Roman Tyczka pisze: > Nie wiem, ale się wypowiem :-P > Pewnie chodzi o wydajność. Nie bardzo sobie ją wyobrażam. Wyobraźmy sobie, że narysowałem 100 prostokątów na canvas i jeden z nich chcę przesunąć o 1px. No to wtedy kasuję cały canvas i odnowa rysuję wszystkie 100 prostokątów z jednym przesuniętym. A teraz animacja tego prostokąta 25 klatek na sekundę... Nie ma jak tego sprzętowo przyspieszać W SVG masz normalną akcelerację sprzętową obiektów. -- Pozdrawiam, Marek
Re: Dlaczego dominuje canvas nad svg?
Author: Roman Tyczka
Date: Mon, 13 Aug 2018 07:31
Date: Mon, 13 Aug 2018 07:31
26 lines
1731 bytes
1731 bytes
On Sun, 12 Aug 2018 21:45:53 +0200, Marek S wrote: >> Nie wiem, ale się wypowiem :-P >> Pewnie chodzi o wydajność. > > Nie bardzo sobie ją wyobrażam. Wyobraźmy sobie, że narysowałem 100 > prostokątów na canvas i jeden z nich chcę przesunąć o 1px. No to wtedy > kasuję cały canvas i odnowa rysuję wszystkie 100 prostokątów z jednym > przesuniętym. Dlaczego niby tak? W Windows GUI jest też rysowane na canvasie, też bitmapowo a nie wektorami. Gdy masz takie 100 prostokątów narysowane i chcesz jeden przesunąć to przerysowujesz tylko obszar na którym jest ten prostokąt, a nie cały canvas. > A teraz animacja tego prostokąta 25 klatek na sekundę... > Nie ma jak tego sprzętowo przyspieszać > > W SVG masz normalną akcelerację sprzętową obiektów. I na czym polega akceleracja SVG? -- pozdrawiam Roman Tyczka
Re: Dlaczego dominuje canvas nad svg?
Author: Marek S
Date: Mon, 13 Aug 2018 20:30
Date: Mon, 13 Aug 2018 20:30
34 lines
2381 bytes
2381 bytes
W dniu 2018-08-13 o 09:31, Roman Tyczka pisze: > Dlaczego niby tak? W Windows GUI jest też rysowane na canvasie, też > bitmapowo a nie wektorami. Gdy masz takie 100 prostokątów narysowane i > chcesz jeden przesunąć to przerysowujesz tylko obszar na którym jest ten > prostokąt, a nie cały canvas. Jasne, lecz teraz bardziej realistyczny schemat działania. Trudno przewidzieć jaki fragment bitmapy będzie modyfikowany. Jest jakaś gra, leci chmurka, użytkownik oddziałuje na jakieś elementy tego obrazu, słowem: dzieje się. Jak teraz decydować jakie obszary cache'ować i odrysowywać? Zadanie wydaje się niewykonalne. W canvas masz funkcje save i restore. Musisz zadecydować co jest statyczne a co nie. W dodatku ginie w tym informacja o z-order więc cacheowanie czegokolwiek jest pozbawione sensu w bardziej złożonych sytuacjach niż np. rysowanie wykresu. >> A teraz animacja tego prostokąta 25 klatek na sekundę... >> Nie ma jak tego sprzętowo przyspieszać >> >> W SVG masz normalną akcelerację sprzętową obiektów. > > I na czym polega akceleracja SVG? Np. na użyciu "transform" i pochodnych. http://serversideguy.com/2018/04/30/can-svg-animations-use-less-cpu/ Mam głównie na myśli nie dbanie o redraw fragmentów grafiki lecz o całość animacji, w której trudno przewidzieć co się rusza a co jest statyczne. -- Pozdrawiam, Marek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads