Zestaw wykresów scen GTK
Oryginalni autorzy | Manuelle Bassi i in. |
---|---|
Deweloperzy | Projekt GNOME |
Pierwsze wydanie | 24 marca 2017 |
Napisane w | C |
System operacyjny | Część GTK |
Typ | Biblioteka oprogramowania |
Licencja | LGPL |
Strona internetowa |
GTK Scene Graph Kit ( GSK ) to interfejs API renderowania i wykresów scen dla GTK wprowadzony w wersji 3.90. GSK znajduje się pomiędzy graficznymi elementami sterującymi (widżetami) a renderowaniem.
Podobnie jak GDK , GSK jest częścią GTK i podlega licencji GNU Lesser General Public License (LGPL).
Racjonalne uzasadnienie
GSK jest częścią GTK. GSK ma być używany przez samo GTK i przez aplikacje oparte na GTK, które chcą zastąpić bałagan w swoim interfejsie użytkownika. Aplikacje, które wykorzystywały Clutter zamiast tylko GTK, to np. GNOME Shell , GNOME Videos , GNOME Boxes i Cheese .
Każda aplikacja, która korzysta z graficznych elementów sterujących GTK (widżetów), w przeciwieństwie do tych aplikacji, które otrzymują okno GTK, a następnie rysują się na nim, czerpią korzyści z GSK.
Wydajność
Rysowanie graficznych elementów sterujących (widżetów) bez scenografu prowadzi do renderowania rzeczy, które nie pojawiają się na ekranie, rzeczy, które nie muszą być renderowane; w związku z tym prowadzi to do możliwych do uniknięcia strat wydajności i żywotności baterii. Scenegraph służy do określania powierzchni ukrytej .
Prostota
Sposób, w jaki widżety były rysowane w GTK (kiedy nie używano Clutter), polegał na tym, że funkcja rysowania (część GDK , stąd nazwa (GIMP „Drawing” Kit)) rysowała wszystko. Nie było sposobu, aby wiedzieć, co właśnie zostało narysowane. Aby wiedzieć, gdzie aktualnie znajduje się wskaźnik myszy, należało obliczyć bieżącą pozycję. Dzięki GSK pisanie złożonych graficznych elementów sterujących (widżetów) powinno być dość łatwe i nadal łatwo śledzić położenie wskaźnika myszy.
CSS
Zdecydowano, że GTK przejdzie do modelu opartego na kaskadowych arkuszach stylów (CSS), w jaki sposób stylizowane są graficzne elementy kontrolne (widżety) (tj. motywy / skórki ) i renderowane. W CSS cienie, obramowania, dopełnienie i właściwości stylu mają dobrze zdefiniowaną semantykę . Niektóre z tych semantyk są trudne do zaimplementowania w starym modelu rysowania GTK.
GSK korzysta z grafenu, zewnętrznej biblioteki zawierającej zbiór typów geometrii — punktów, rozmiarów, prostokątów, wektorów, kwadratów, kwaternionów, macierzy. graphene został przeniesiony do systemu kompilacji Meson .
Potok renderowania GSK
GSK stosuje podejście dwuwarstwowe:
- Dolna warstwa to proste renderujące drzewo operacji; można go przekształcić w odpowiednie polecenia renderowania przy minimalnych zmianach stanu, więc zostaje przekształcony w potok renderowania. Drzewo operacji renderowania jest reprezentowane przez instancje GskRenderNode; instancja GskRenderer pobiera węzły renderowania i przesyła je (po potencjalnej zmianie kolejności i przekształceniu ich do bardziej odpowiedniej reprezentacji) do bazowego systemu graficznego.
- warstwa wyższa: złożony zestaw warstw logicznych; dodaje wygodny interfejs API wysokiego poziomu dla twórców aplikacji.
Interfejsy API renderowania
Począwszy od wersji GTK 3.90, która jest wersją rozwojową tego, co stanie się GTK 4, GSK obsługuje renderowanie przy użyciu następujących zaplecza:
Historia
Nieład
Clutter został udostępniony publicznie 22 czerwca 2006. Biblioteka integracyjna „clutter-gtk” jest dostępna od 2006-11-29.
Na 2nd Desktop Summit w sierpniu 2011 w Berlinie sporo mówiono o „GTK+ 4.0 i Clutter 2.0”.
Pomysł na wprowadzenie wykresu sceny do GTK
W 2008 roku programiści, tacy jak Havoc Pennington , rozważali dodanie płótna sceny do GTK, ponieważ ludzie spoza GTK korzystali z rzeczy takich jak Clutter , Pigment , HippoCanvas lub GooCanvas . Zaproponowano uczynienie graficznych elementów sterujących (widżetów) jednym rodzajem obiektu w bardziej elastycznym grafie sceny.
GSK
Przed GSK rysowanie było wykonywane przez GDK - obsługujące podstawowe renderowanie , takie jak prymitywy rysunkowe, grafika rastrowa (mapy bitowe), kursory , czcionki , a także zdarzenia okien i funkcjonalność przeciągnij i upuść .
W czerwcu 2006 wydano Clutter , bibliotekę „interaktywnego płótna” opartą na OpenGL. Clutter ma swój własny wykres sceny, a programiści GNOME woleli używać wykresu sceny Clutter z GTK, wspieranego przez bibliotekę o nazwie clutter-gtk. Bałagan można osadzić w każdej aplikacji GNOME za pomocą biblioteki clutter-gtk. Biblioteka clutter-gtk udostępnia widżet GtkClutterEmbed GTK, którego można użyć do wyświetlenia ClutterStage.
Niektórzy zastanawiali się, jak połączyć Clutter i GTK w lepszy sposób niż biblioteka clutter-gtk.
W 2011 roku Firefox wprowadził „Azure”, a Joe Drew i Bas Schouten zadali sobie kilka wyjaśnień.
- Na GUADEC2013 w Brnie Emmanuele podzielił się swoim pomysłem na implementację wykresu sceny i frameworka animacji wewnątrz platformy GNOME (po 6 latach pracy nad Clutter).
- GTK Scene Graph Kit (GSK) to nadchodzący wykres sceny dla GTK, który jest w trakcie pisania przez Emanuele Bassi.
- W dniu 30 lipca 2014 r. Emanuelle stwierdził, że jego zdaniem nie powinno być samodzielnego Clutter 2.0.
Podczas Developer Experience Hackfest 2014 odbyła się prezentacja dotycząca nowego wykresu scen dla GTK, który ma zostać włączony do GTK+ 3.16. Następnie planowano, że GSK będzie gotowy iw pełni zintegrowany z GTK+ w wersji 3.20, która ma zostać wydana w marcu 2016. Zostało to przełożone na 3.22, a następnie ostatecznie połączone w 3.90.
Posiadanie obsługi OpenGL (lub OpenGL ES ) w GDK ułatwia nieco lepszą kontrolę potoku graficznego ; OpenGL dobrze nadaje się do komponowania teksturowanych danych, ale zupełnie nie nadaje się do rysowania. [ potrzebne źródło ]
Najnowsze informacje o statusie GSK pochodzą z GUADEC 2016.
Inne projekty
- Biblioteki Fundacji Enlightenment od 2000 roku używają wykresu sceny, zaimplementowanego w bibliotece Evas .
- Qt został przeprojektowany i począwszy od wersji 5 zawiera Qt Quick 2 z renderowaniem opartym na scenografie.
Zobacz też
Linki zewnętrzne
- Podręcznik GNOME dla wersji niestabilnej GSK4
- GSK na wiki.gnome.org
- GSK Demystified (I) , (II) , (III) – Emmanuele Bassi, 2016/08
- Kod GSK z wydania GTK 3.89.5
- Współczesny model rysunkowy GTK – Alexander Larsson, 2013/11/04
- Przegląd GTK i jego bibliotek - Projekt GTK
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg
- https://wiki.gnome.org/Projects/Clutter
- https://wiki.gnome.org/Projects/Clutter/Future
- https://wiki.gnome.org/Projects/Clutter/Apocalypses
- https://wiki.gnome.org/Projects/Clutter/Roadmap