stringtranslate.com

Kit de gráficos de escena GTK

Arquitectura de software simplificada de GTK .
Taxonomía CSS .

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).

Razón fundamental

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.

Actuación

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 .

Sencillez

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.

CSS

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 .

Tubería de renderizado de GSK

GSK utiliza un enfoque de doble capa: [2]

  1. La capa inferior es un árbol de operaciones de representación simple; se puede transformar en comandos de renderizado apropiados con cambios de estado mínimos, por lo que se transforma en el canal de renderizado. El árbol de operaciones de renderizado está representado por instancias de GskRenderNode; una instancia de GskRenderer toma los nodos de renderizado y los envía (después de potencialmente reordenarlos y transformarlos a una representación más apropiada) al sistema gráfico subyacente.
  2. capa superior: un conjunto complejo de capas lógicas; Agrega una API de conveniencia de alto nivel para los desarrolladores de aplicaciones.

API de renderizado

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:

Historia

Desorden

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]

Idea para introducir un gráfico de escena en GTK

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.

GSK

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]

Otros proyectos

Ver también

Referencias

  1. ^ Bassi, Emmanuele (2 de mayo de 2014). "Grafeno".
  2. ^ Bassi, Emmanuele (18 de octubre de 2016). "Implementación inicial del proceso de renderizado de GSK".
  3. ^ Bassi, Emmanuele (29 de noviembre de 2006). "agregar desorden-gtk".
  4. ^ Bassi, Emmanuele (31 de agosto de 2011). "GTK+ 4.0 y Clutter 2.0: arcoíris y unicornios".
  5. ^ Pennington, Estragos (7 de marzo de 2008). "Propuesta de gráfico de escena de Havoc Pennington".
  6. ^ Bassi, Emmanuele (29 de julio de 2014). "El kit de gráficos de escenas GTK +".
  7. ^ "clutter-gtk en git.gnome".
  8. ^ "Presentación del proyecto Azure". 26 de abril de 2011. Archivado desde el original el 8 de septiembre de 2016 . Consultado el 17 de marzo de 2017 .
  9. ^ "Comparación de rendimiento: Azure frente a El Cairo". 2011-06-06.
  10. ^ "Liberando Azure". 2011-08-16.
  11. ^ Bassi, Emmanuele (12 de agosto de 2013). "Futuro en el pasado gráfico de escena GTK".
  12. ^ Bassi, Emmanuele (29 de julio de 2014). "El kit de gráficos de escenas GTK +".
  13. ^ Bassi, Emmanuele (30 de julio de 2014). "Problema de detención: futuro en el pasado".
  14. ^ "2014 Developer Experience Hackfest: un gráfico de escena para GTK + 3.16".
  15. ^ "GNOME Wiki: hoja de ruta para GTK+".
  16. ^ Bassi, Emmanuele (16 de agosto de 2016). "GTK: ¿ya estamos en el futuro?". YouTube .
  17. ^ "Eva".
  18. ^ "Gráfico de escena rápida Qt".

enlaces externos