Renderer#

class Renderer(**properties: Any)#

Superclasses: Object

Subclasses: BroadwayRenderer, CairoRenderer, GLRenderer, NglRenderer, VulkanRenderer

Renders a scene graph defined via a tree of RenderNode instances.

Typically you will use a GskRenderer instance to repeatedly call render to update the contents of its associated Surface.

It is necessary to realize a GskRenderer instance using realize before calling render, in order to create the appropriate windowing system resources needed to render the scene.

Constructors#

class Renderer
classmethod new_for_surface(surface: Surface) Renderer | None#

Creates an appropriate GskRenderer instance for the given surface.

If the GSK_RENDERER environment variable is set, GSK will try that renderer first, before trying the backend-specific default. The ultimate fallback is the cairo renderer.

The renderer will be realized before it is returned.

Parameters:

surface – a surface

Methods#

class Renderer
get_surface() Surface | None#

Retrieves the surface that the renderer is associated with.

If the renderer has not been realized yet, NULL will be returned.

is_realized() bool#

Checks whether the renderer is realized or not.

realize(surface: Surface | None = None) bool#

Creates the resources needed by the renderer.

Since GTK 4.6, the surface may be NULL, which allows using renderers without having to create a surface. Since GTK 4.14, it is recommended to use realize_for_display for this case.

Note that it is mandatory to call unrealize before destroying the renderer.

Parameters:

surface – the surface that renderer will be used on

realize_for_display(display: Display) bool#

Creates the resources needed by the renderer.

Note that it is mandatory to call unrealize before destroying the renderer.

Added in version 4.14.

Parameters:

display – the display that the renderer will be used on

render(root: RenderNode, region: Region | None = None) None#

Renders the scene graph, described by a tree of GskRenderNode instances to the renderer’s surface, ensuring that the given region gets redrawn.

If the renderer has no associated surface, this function does nothing.

Renderers must ensure that changes of the contents given by the root node as well as the area given by region are redrawn. They are however free to not redraw any pixel outside of region if they can guarantee that it didn’t change.

The renderer will acquire a reference on the GskRenderNode tree while the rendering is in progress.

Parameters:
  • root – the render node to render

  • region – the cairo_region_t that must be redrawn or NULL for the whole surface

render_texture(root: RenderNode, viewport: Rect | None = None) Texture#

Renders a scene graph, described by a tree of GskRenderNode instances, to a texture.

The renderer will acquire a reference on the GskRenderNode tree while the rendering is in progress.

If you want to apply any transformations to root, you should put it into a transform node and pass that node instead.

Parameters:
  • root – the render node to render

  • viewport – the section to draw or NULL to use root's bounds

unrealize() None#

Releases all the resources created by realize.

Properties#

class Renderer
props.realized: bool#

The type of the None singleton.

props.surface: Surface#

The type of the None singleton.