GTK Scene Graph Kit ( GSK ) es la API de renderizado y gráficos de escena para GTK introducida con la versión 3.90. GSK se encuentra entre los elementos de control gráfico (widgets) y el renderizado.
Al igual que GDK , GSK es parte de GTK y tiene la licencia GNU Lesser General Public License (LGPL).
GSK es parte de GTK. GSK está destinado a ser utilizado por el propio GTK y por aplicaciones basadas en GTK que deseen reemplazar Clutter en su interfaz de usuario. Las aplicaciones que hicieron uso de Clutter en lugar de usar sólo GTK son, por ejemplo, GNOME Shell , GNOME Videos , GNOME Boxes y Cheese .
Cualquier aplicación que haga uso de los elementos de control gráfico (widgets) de GTK, a diferencia de aquellas aplicaciones que obtienen una ventana GTK y luego se dibujan en ella, se benefician de GSK.
Dibujar elementos de control gráfico (widgets) sin un gráfico de escena conduce a renderizar cosas que no aparecen en la pantalla, cosas que no necesitan ser renderizadas; por lo tanto, conduce a pérdidas evitables de rendimiento y duración de la batería. El gráfico de escena se utiliza para determinar la superficie oculta .
La forma en que se dibujaban los widgets en GTK (cuando no se usaba Clutter) era que una función de dibujo (parte de GDK , de ahí el nombre (Kit de "Dibujo" de GIMP)) dibujaba todo. No había forma de saber qué se acababa de dibujar. Para saber sobre dónde se encontraba actualmente el puntero del mouse, era necesario calcular la posición actual. Con GSK, debería ser bastante fácil escribir elementos de control gráficos complejos (widgets) y aun así rastrear fácilmente la ubicación del puntero del mouse.
Se decidió que GTK pasara a un modelo basado en hojas de estilo en cascada (CSS) para determinar cómo se diseñan y renderizan los elementos de control gráfico ( widgets ) . En CSS, las propiedades de sombras, bordes, relleno y estilo tienen una semántica bien definida . Algunas de esas semánticas son difíciles de implementar con el antiguo modelo de dibujo GTK.
GSK utiliza grafeno, [1] una biblioteca externa que alberga una colección de tipos de geometría: puntos, tamaños, rectángulos, vectores, cuaterniones, matrices. El grafeno ha sido portado al sistema de construcción Meson .
GSK utiliza un enfoque de doble capa: [2]
A partir de GTK 3.90, que es el número de versión de desarrollo de lo que se convertirá en GTK 4, GSK admite el renderizado utilizando estos backends:
Clutter se lanzó al público el 22 de junio de 2006. La biblioteca de integración "clutter-gtk" ha estado disponible desde el 29 de noviembre de 2006. [3]
En la 2ª Desktop Summit celebrada en agosto de 2011 en Berlín se habló mucho sobre "GTK+ 4.0 y Clutter 2.0". [4]
En 2008, desarrolladores como Havoc Pennington estaban considerando agregar un lienzo de escena a GTK, ya que personas ajenas a GTK usaban cosas como Clutter , Pigment, HippoCanvas o GooCanvas. [5] Se propuso convertir los elementos de control gráfico (widgets) en un tipo de objeto en un gráfico de escena más flexible.
Antes de GSK, el dibujo lo realizaba GDK, que manejaba el renderizado básico , como primitivas de dibujo, gráficos rasterizados (mapas de bits), cursores , fuentes , así como eventos de ventana y funcionalidad de arrastrar y soltar . [6]
En junio de 2006, se lanzó Clutter , una biblioteca de 'lienzo interactivo' basada en OpenGL. Clutter tiene su propio gráfico de escena y los desarrolladores de GNOME prefirieron utilizar el gráfico de escena de Clutter con GTK, facilitado por una biblioteca llamada clutter-gtk. [7] Clutter se puede incrustar en todas las aplicaciones de GNOME utilizando la biblioteca clutter-gtk. La biblioteca clutter-gtk proporciona un widget GTK GtkClutterEmbed que se puede utilizar para mostrar un ClutterStage.
Se pensó en cómo fusionar Clutter y GTK de una mejor manera que la biblioteca clutter-gtk.
En 2011, Firefox introdujo "Azure" y Joe Drew y Bas Schouten se molestaron en dar algunas explicaciones. [8] [9] [10]
Hubo una presentación en el Developer Experience Hackfest 2014 sobre un nuevo gráfico de escena para GTK destinado a fusionarse en GTK+ 3.16. [14] Luego se planeó que GSK estuviera listo y completamente integrado en GTK+ versión 3.20, que se lanzaría en marzo de 2016. Esto se pospuso a 3.22, [15] y luego finalmente se fusionó en 3.90.
Tener soporte OpenGL (u OpenGL ES ) en GDK facilita un control ligeramente mejor del proceso de gráficos ; OpenGL es muy adecuado para componer datos texturizados, pero totalmente inadecuado para dibujar. [ cita necesaria ]
La información más reciente sobre el estado de GSK es de GUADEC 2016. [16]