🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

6 total messages Started by Marek S Sat, 11 Aug 2018 21:57
Dlaczego dominuje canvas nad svg?
#408703
Author: Marek S
Date: Sat, 11 Aug 2018 21:57
36 lines
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?
#408705
Author: Roman Tyczka
Date: Sun, 12 Aug 2018 09:24
14 lines
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?
#408704
Author: szykcech
Date: Sun, 12 Aug 2018 12:06
3 lines
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?
#408706
Author: Marek S
Date: Sun, 12 Aug 2018 19:45
16 lines
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?
#408707
Author: Roman Tyczka
Date: Mon, 13 Aug 2018 07:31
26 lines
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?
#408708
Author: Marek S
Date: Mon, 13 Aug 2018 20:30
34 lines
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