QOffscreenSurface

The QOffscreenSurface class represents an offscreen surface in the underlying platform. More

Inheritance diagram of PySide2.QtGui.QOffscreenSurface

New in version 5.1.

Synopsis

Functions

Signals

Detailed Description

QOffscreenSurface is intended to be used with QOpenGLContext to allow rendering with OpenGL in an arbitrary thread without the need to create a QWindow .

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

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 QWindow internally.

Note

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.

Note

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() or format() after the context or window has been created . Passing the format returned from requestedFormat() to 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.

Note

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 PySide2.QtGui.QOffscreenSurface([screen=None])

PySide2.QtGui.QOffscreenSurface(screen, parent)

param parent:

PySide2.QtCore.QObject

param screen:

PySide2.QtGui.QScreen

Creates an offscreen surface for the targetScreen .

The underlying platform surface is not created until create() is called.

Creates an offscreen surface for the targetScreen with the given parent .

The underlying platform surface is not created until create() is called.

PySide2.QtGui.QOffscreenSurface.create()

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.

Call destroy() to free the platform resources if necessary.

Note

Some platforms require this function to be called on the main (GUI) thread.

See also

destroy()

PySide2.QtGui.QOffscreenSurface.destroy()

Releases the native platform resources associated with this offscreen surface.

See also

create()

PySide2.QtGui.QOffscreenSurface.isValid()
Return type:

bool

Returns true if this offscreen surface is valid; otherwise returns false .

The offscreen surface is valid if the platform resources have been successfuly allocated.

See also

create()

PySide2.QtGui.QOffscreenSurface.nativeHandle()
Return type:

void

Returns an optional native handle to which the offscreen surface is connected.

PySide2.QtGui.QOffscreenSurface.requestedFormat()
Return type:

PySide2.QtGui.QSurfaceFormat

Returns the requested surfaceformat of this offscreen surface.

If the requested format was not supported by the platform implementation, the will differ from the actual offscreen surface format.

This is the value set with setFormat() .

See also

setFormat() format()

PySide2.QtGui.QOffscreenSurface.screen()
Return type:

PySide2.QtGui.QScreen

Returns the screen to which the offscreen surface is connected.

See also

setScreen()

PySide2.QtGui.QOffscreenSurface.screenChanged(screen)
Parameters:

screenPySide2.QtGui.QScreen

PySide2.QtGui.QOffscreenSurface.setFormat(format)
Parameters:

formatPySide2.QtGui.QSurfaceFormat

Sets the offscreen surface format .

The surface format will be resolved in the create() function. Calling this function after create() will not re-resolve the surface format of the native surface.

See also

format() create() destroy()

PySide2.QtGui.QOffscreenSurface.setNativeHandle(handle)
Parameters:

handlevoid

Sets the native handle to which the offscreen surface is connected to handle .

The native handle will be resolved in the create() function. Calling this function after create() will not re-create a native surface.

Note

The interpretation of the native handle is platform specific. Only some platforms will support adopting native handles of offscreen surfaces and platforms that do not implement this support will ignore the handle.

See also

nativeHandle()

PySide2.QtGui.QOffscreenSurface.setScreen(screen)
Parameters:

screenPySide2.QtGui.QScreen

Sets the screen to which the offscreen surface is connected.

If the offscreen surface has been created, it will be recreated on the newScreen .

See also

screen()