Klasse Renderer

Alle implementierten Schnittstellen:
PointerInterface
Bekannte direkte Unterklassen:
BroadwayRenderer, CairoRenderer, GLRenderer, NglRenderer, VulkanRenderer

public class Renderer extends PropertyHolder
A class that renders a scene graph defined via a tree of
[class@Gsk.RenderNode] instances.

Typically you will use a `GskRenderer` instance to repeatedly call
[method@Gsk.Renderer.render] to update the contents of its associated
[class@Gdk.Surface].

It is necessary to realize a `GskRenderer` instance using
[method@Gsk.Renderer.realize] before calling [method@Gsk.Renderer.render],
in order to create the appropriate windowing system resources needed
to render the scene.

https://docs.gtk.org/gsk4/class.Renderer.html

  • Konstruktordetails

  • Methodendetails

    • getClassHandler

      public static ClassHandler getClassHandler()
    • newForSurfaceRenderer

      public static Renderer newForSurfaceRenderer(@Nonnull Surface surface)
      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.
      Parameter:
      surface - a surface
      Gibt zurück:
      the realized renderer
    • getSurface

      public Surface getSurface()
      Retrieves the surface that the renderer is associated with.

      If the renderer has not been realized yet, `NULL` will be returned.
      Gibt zurück:
      the surface
    • isRealized

      public boolean isRealized()
      Checks whether the renderer is realized or not.
      Gibt zurück:
      true if the renderer was realized, false otherwise
    • realize

      public boolean realize(@Nullable Surface surface) throws AllocationError
      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 [method@Gsk.Renderer.realize_for_display]
      for this case.

      Note that it is mandatory to call [method@Gsk.Renderer.unrealize]
      before destroying the renderer.
      Parameter:
      surface - the surface that renderer will be used on
      Gibt zurück:
      whether the renderer was successfully realized
      Löst aus:
      AllocationError
    • realizeForDisplay

      public boolean realizeForDisplay(@Nonnull Display display) throws AllocationError
      Creates the resources needed by the renderer.

      Note that it is mandatory to call [method@Gsk.Renderer.unrealize]
      before destroying the renderer.
      Parameter:
      display - the display that the renderer will be used on
      Gibt zurück:
      whether the renderer was successfully realized
      Löst aus:
      AllocationError
    • render

      public void render(@Nonnull RenderNode root, @Nullable Region region)
      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.
      Parameter:
      root - the render node to render
      region - the `cairo_region_t` that must be redrawn or `NULL` for the whole surface
    • renderTexture

      public Texture renderTexture(@Nonnull RenderNode root, @Nullable Rect viewport)
      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.
      Parameter:
      root - the render node to render
      viewport - the section to draw or `NULL` to use @root's bounds
      Gibt zurück:
      a texture with the rendered contents of @root
    • unrealize

      public void unrealize()
      Releases all the resources created by [method@Gsk.Renderer.realize].
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()