slint::platform::SoftwareRenderer Class
class SoftwareRenderer;#include <slint-platform.h>Inherits slint::platform::AbstractRenderer.
Slint’s software renderer.
To be used as a template parameter of the WindowAdapter.
Use the render() function to render in a buffer
Public Types
Section titled “Public Types” RepaintBufferType
Section titled “ RepaintBufferType”enum class RepaintBufferType
| Value | Description |
|---|---|
NewBuffer | The full window is always redrawn. No attempt at partial rendering will be made. |
ReusedBuffer | |
SwappedBuffers |
This enum describes which parts of the buffer passed to the SoftwareRenderer may be re-used to speed up painting.
RenderingRotation
Section titled “ RenderingRotation”enum class RenderingRotation
| Value | Description |
|---|---|
NoRotation | No rotation. |
Rotate90 | Rotate 90° to the left. |
Rotate180 | 180° rotation (upside-down) |
Rotate270 | Rotate 90° to the right. |
This enum describes the rotation that is applied to the buffer when rendering. To be used in set_rendering_rotation()
DrawTextureArgs
Section titled “ DrawTextureArgs”cbindgen_private::DrawTextureArgs using slint::platform::SoftwareRenderer::DrawTextureArgs = cbindgen_private::DrawTextureArgs
Representation of a texture to blend in the destination buffer.
DrawRectangleArgs
Section titled “ DrawRectangleArgs”cbindgen_private::DrawRectangleArgs using slint::platform::SoftwareRenderer::DrawRectangleArgs = cbindgen_private::DrawRectangleArgs
Arguments for draw_rectangle.
Public Functions
Section titled “Public Functions” ~SoftwareRenderer (virtual)
Section titled “ ~SoftwareRenderer (virtual)”slint::platform::SoftwareRenderer::~SoftwareRenderer()
SoftwareRenderer
Section titled “ SoftwareRenderer”slint::platform::SoftwareRenderer::SoftwareRenderer(const SoftwareRenderer &)=delete
operator=
Section titled “ operator=”SoftwareRenderer & slint::platform::SoftwareRenderer::operator=(const SoftwareRenderer &)=delete
SoftwareRenderer
Section titled “ SoftwareRenderer”explicit slint::platform::SoftwareRenderer::SoftwareRenderer(RepaintBufferType buffer_type)
Constructs a new SoftwareRenderer with the buffer_type as strategy for handling the differences between rendering buffers.
render
Section titled “ render”PhysicalRegion slint::platform::SoftwareRenderer::render(std::span< slint::Rgb8Pixel > buffer, std::size_t pixel_stride) const
Render the window scene into a pixel buffer
The buffer must be at least as large as the associated slint::Window
The stride is the amount of pixels between two lines in the buffer. It is must be at least as large as the width of the window.
render
Section titled “ render”PhysicalRegion slint::platform::SoftwareRenderer::render(std::span< Rgb565Pixel > buffer, std::size_t pixel_stride) const
Render the window scene into an RGB 565 encoded pixel buffer
The buffer must be at least as large as the associated slint::Window
The stride is the amount of pixels between two lines in the buffer. It is must be at least as large as the width of the window.
render_by_line
Section titled “ render_by_line”PhysicalRegion slint::platform::SoftwareRenderer::render_by_line(Callback process_line_callback) const
Render the window scene, line by line. The provided Callback will be invoked for each line that needs to rendered.
The renderer uses a cache internally and will only render the part of the window which are dirty.
This function returns the physical region that was rendered considering the rotation.
The callback must be an invocable with the signature (size_t line, size_t begin, size_t end, auto render_fn). It is invoked with the line number as first parameter, and the start x and end x coordinates of the line as second and third parameter. The implementation must provide a line buffer (as std::span ↗) and invoke the provided fourth parameter (render_fn) with it, to fill it with pixels. After the line buffer is filled with pixels, your implementation is free to flush that line to the screen for display.
The first template parameter (PixelType) must be specified and can be either Rgb565Pixel or Rgb8Pixel.
render
Section titled “ render”PhysicalRegion slint::platform::SoftwareRenderer::render(TargetPixelBuffer< Rgb8Pixel > *buffer) const
Renders into the given TargetPixelBuffer.
Note: This class is still experimental - its API is subject to changes and not stabilized yet. To use the class, you must enable the SLINT_FEATURE_EXPERIMENTAL=ON CMake option.
render
Section titled “ render”PhysicalRegion slint::platform::SoftwareRenderer::render(TargetPixelBuffer< Rgb565Pixel > *buffer) const
Renders into the given TargetPixelBuffer.
Note: This class is still experimental - its API is subject to changes and not stabilized yet. To use the class, you must enable the SLINT_FEATURE_EXPERIMENTAL=ON CMake option.
set_rendering_rotation
Section titled “ set_rendering_rotation”void slint::platform::SoftwareRenderer::set_rendering_rotation(RenderingRotation rotation)
Set how the window needs to be rotated in the buffer.
This is typically used to implement screen rotation in software
© 2026 SixtyFPS GmbH