New in version 5.1.
Even though the surface is typically renderable, the surface’s pixels are not accessible.
QOffscreenSurface should only be used to create OpenGL resources such as textures or framebuffer objects.
An application will typically use
QOffscreenSurface to perform some time-consuming tasks in a separate thread in order to avoid stalling the main rendering thread. Resources created in the
QOffscreenSurface ‘s context can be shared with the main OpenGL context. Some common use cases are asynchronous texture uploads or rendering into a
How the offscreen surface is implemented depends on the underlying platform, but it will typically use a pixel buffer (pbuffer). If the platform doesn’t implement or support offscreen surfaces,
QOffscreenSurface will use an invisible
Due to the fact that
QOffscreenSurface is backed by a
QWindow on some platforms, cross-platform applications must ensure that
create() is only called on the main (GUI) thread. The
QOffscreenSurface is then safe to be used with
makeCurrent() on other threads, but the initialization and destruction must always happen on the main (GUI) thread.
In order to create an offscreen surface that is guaranteed to be compatible with a given context and window, make sure to set the format to the context’s or the window’s actual format, that is, the
QSurfaceFormat returned from
format() after the context or window has been created. Passing the format returned from
setFormat() may result in an incompatible offscreen surface since the underlying windowing system interface may offer a different set of configurations for window and pbuffer surfaces.
Some platforms may utilize a surfaceless context extension (for example EGL_KHR_surfaceless_context) when available. In this case there will be no underlying native surface. For the use cases of
QOffscreenSurface (rendering to FBOs, texture upload) this is not a problem.
- class PySide6.QtGui.QOffscreenSurface([screen=None[, parent=None]])#
Creates an offscreen surface for the
targetScreen with the given
The underlying platform surface is not created until
create() is called.
Allocates the platform resources associated with the offscreen surface.
It is at this point that the surface format set using
setFormat() gets resolved into an actual native surface.
destroy() to free the platform resources if necessary.
Some platforms require this function to be called on the main (GUI) thread.
Releases the native platform resources associated with this offscreen surface.
- Return type
true if this offscreen surface is valid; otherwise returns
The offscreen surface is valid if the platform resources have been successfully allocated.
Returns the requested surfaceformat of this offscreen surface.
If the requested format was not supported by the platform implementation, the requestedFormat will differ from the actual offscreen surface format.
This is the value set with
- PySide6.QtGui.QOffscreenSurface.resolveInterface(name, revision)#
name – str
revision – int
- Return type
Returns the screen to which the offscreen surface is connected.
Sets the offscreen surface
Sets the screen to which the offscreen surface is connected.
If the offscreen surface has been created, it will be recreated on the