PySide6.QtGui.QRhiGles2InitParams

class QRhiGles2InitParams

OpenGL specific initialization parameters. More

Inheritance diagram of PySide6.QtGui.QRhiGles2InitParams

Added in version 6.6.

Synopsis

Methods

Static functions

Note

This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE

Detailed Description

Note

This is a RHI API with limited compatibility guarantees, see QRhi for details.

An OpenGL-based QRhi needs an already created QSurface that can be used in combination with QOpenGLContext . Most commonly, this is a QOffscreenSurface in practice. Additionally, while optional, it is recommended that the QWindow the first QRhiSwapChain will target is passed in as well.

QOffscreenSurface *fallbackSurface = QRhiGles2InitParams::newFallbackSurface();
QRhiGles2InitParams params;
params.fallbackSurface = fallbackSurface;
params.window = window;
rhi = QRhi::create(QRhi::OpenGLES2, &params);

By default QRhi creates a QOpenGLContext on its own. This approach works well in most cases, included threaded scenarios, where there is a dedicated QRhi for each rendering thread. As there will be a QOpenGLContext for each QRhi , the OpenGL context requirements (a context can only be current on one thread) are satisfied. The implicitly created context is destroyed automatically together with the QRhi .

The QSurfaceFormat for the context is specified in format. The constructor sets this to defaultFormat() so applications that call setDefaultFormat() with the appropriate settings before the constructor runs will not need to change value of format.

Note

Remember to set the depth and stencil buffer sizes to 24 and 8 when the renderer relies on depth or stencil testing, either in the global default QSurfaceFormat , or, alternatively, separately in all the involved QSurfaceFormat instances: in format, the format argument passed to newFallbackSurface() , and on any QWindow that is used with the QRhi .

A QSurface has to be specified in fallbackSurface. In order to prevent mistakes in threaded situations, this is never created automatically by the QRhi because, like QWindow , instances of QSurface subclasses can often be created on the gui/main thread only.

As a convenience, applications can use newFallbackSurface() which creates and returns a QOffscreenSurface that is compatible with the QOpenGLContext that is going to be created by the QRhi afterwards. Note that the ownership of the returned QOffscreenSurface is transferred to the caller and the QRhi will not destroy it.

Note

With the OpenGL backend, QRhiSwapChain can only target QWindow instances that have their surface type set to OpenGLSurface or RasterGLSurface .

Note

window is optional. It is recommended to specify it whenever possible, in order to avoid problems on multi-adapter and multi-screen systems. When window is not set, the very first makeCurrent() happens with fallbackSurface which may be an invisible window on some platforms (for example, Windows) and that may trigger unexpected problems in some cases.

In case resource sharing with an existing QOpenGLContext is desired, shareContext can be set to an existing QOpenGLContext . Alternatively, Qt::AA_ShareOpenGLContexts is honored as well, when enabled.

Working with existing OpenGL contexts

When interoperating with another graphics engine, it may be necessary to get a QRhi instance that uses the same OpenGL context. This can be achieved by passing a pointer to a QRhiGles2NativeHandles to create() . The QRhiGles2NativeHandles::context must be set to a non-null value then.

An alternative approach is to create a QOpenGLContext that shares resources with the other engine’s context and passing in that context via QRhiGles2NativeHandles .

The QRhi does not take ownership of the QOpenGLContext passed in via QRhiGles2NativeHandles .

PySide6.QtGui.QRhiGles2InitParams.format
PySide6.QtGui.QRhiGles2InitParams.fallbackSurface
PySide6.QtGui.QRhiGles2InitParams.window
PySide6.QtGui.QRhiGles2InitParams.shareContext
__init__()

Constructs a new QRhiGles2InitParams .

format is set to defaultFormat() .

static newFallbackSurface([format=QSurfaceFormat.defaultFormat()])
Parameters:

formatQSurfaceFormat

Return type:

QOffscreenSurface

Returns a new QOffscreenSurface that can be used with a QRhi by passing it via a QRhiGles2InitParams .

When format is not specified, its default value is the global default format settable via setDefaultFormat() .

format is adjusted as appropriate in order to avoid having problems afterwards due to an incompatible context and surface.

Note

This function must only be called on the gui/main thread.

Note

It is the application’s responsibility to destroy the returned QOffscreenSurface on the gui/main thread once the associated QRhi has been destroyed. The QRhi will not destroy the QOffscreenSurface .