![]() |
Qt 6.x
The Qt SDK
|
\inmodule QtGui More...
#include <qoffscreensurface.h>
Signals | |
void | screenChanged (QScreen *screen) |
This signal is emitted when an offscreen surface's screen changes, either by being set explicitly with setScreen(), or automatically when the window's screen is removed. | |
![]() | |
void | destroyed (QObject *=nullptr) |
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked. | |
void | objectNameChanged (const QString &objectName, QPrivateSignal) |
This signal is emitted after the object's name has been changed. | |
Public Member Functions | |
QOffscreenSurface (QScreen *screen=nullptr, QObject *parent=nullptr) | |
~QOffscreenSurface () | |
Destroys the offscreen surface. | |
SurfaceType | surfaceType () const override |
Returns the surface type of the offscreen surface. | |
void | create () |
Allocates the platform resources associated with the offscreen surface. | |
void | destroy () |
Releases the native platform resources associated with this offscreen surface. | |
bool | isValid () const |
Returns true if this offscreen surface is valid; otherwise returns false . | |
void | setFormat (const QSurfaceFormat &format) |
Sets the offscreen surface format. | |
QSurfaceFormat | format () const override |
Returns the actual format of this offscreen surface. | |
QSurfaceFormat | requestedFormat () const |
Returns the requested surfaceformat of this offscreen surface. | |
QSize | size () const override |
Returns the size of the offscreen surface. | |
QScreen * | screen () const |
Returns the screen to which the offscreen surface is connected. | |
void | setScreen (QScreen *screen) |
Sets the screen to which the offscreen surface is connected. | |
QPlatformOffscreenSurface * | handle () const |
Returns the platform offscreen surface corresponding to the offscreen surface. | |
![]() | |
Q_INVOKABLE | QObject (QObject *parent=nullptr) |
Constructs an object with parent object parent. | |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. | |
virtual bool | event (QEvent *event) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
Filters events if this object has been installed as an event filter for the watched object. | |
QString | objectName () const |
Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
Sets the object's name to name. | |
void | setObjectName (QAnyStringView name) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
QBindable< QString > | bindableObjectName () |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false . | |
bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false . | |
bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false . | |
bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false . | |
bool | blockSignals (bool b) noexcept |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. | |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
template<typename T > | |
T | findChild (const QString &aName=QString(), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
template<typename T > | |
QList< T > | findChildren (const QString &aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
template<typename T > | |
QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
const QObjectList & | children () const |
Returns a list of child objects. | |
void | setParent (QObject *parent) |
Makes the object a child of parent. | |
void | installEventFilter (QObject *filterObj) |
Installs an event filter filterObj on this object. | |
void | removeEventFilter (QObject *obj) |
Removes an event filter object obj from this object. | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
void | dumpObjectTree () const |
Dumps a tree of children to the debug output. | |
void | dumpObjectInfo () const |
Dumps information about signal connections, etc. | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. | |
bool | setProperty (const char *name, QVariant &&value) |
QVariant | property (const char *name) const |
Returns the value of the object's name property. | |
QList< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () const |
Returns a pointer to the parent object. | |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false . | |
![]() | |
virtual | ~QSurface () |
Destroys the surface. | |
SurfaceClass | surfaceClass () const |
Returns the surface class of this surface. | |
virtual QSurfaceFormat | format () const =0 |
Returns the format of the surface. | |
virtual QPlatformSurface * | surfaceHandle () const =0 |
Returns a handle to the platform-specific implementation of the surface. | |
virtual SurfaceType | surfaceType () const =0 |
Returns the type of the surface. | |
bool | supportsOpenGL () const |
Returns true if the surface is OpenGL compatible and can be used in conjunction with QOpenGLContext; otherwise returns false. | |
virtual QSize | size () const =0 |
Returns the size of the surface in pixels. | |
Private Member Functions | |
QPlatformSurface * | surfaceHandle () const override |
Returns the platform surface corresponding to the offscreen surface. | |
Additional Inherited Members | |
![]() | |
enum | SurfaceClass { Window , Offscreen } |
The SurfaceClass enum describes the actual subclass of the surface. More... | |
enum | SurfaceType { RasterSurface , OpenGLSurface , RasterGLSurface , OpenVGSurface , VulkanSurface , MetalSurface , Direct3DSurface } |
The SurfaceType enum describes what type of surface this is. More... | |
![]() | |
void | deleteLater () |
\threadsafe | |
![]() | |
static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
\threadsafe | |
static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
\threadsafe | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static bool | disconnect (const QMetaObject::Connection &) |
Disconnect a connection. | |
template<typename Func1 , typename Func2 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
template<typename Func1 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
![]() | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
int | senderSignalIndex () const |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. | |
bool | isSignalConnected (const QMetaMethod &signal) const |
virtual void | timerEvent (QTimerEvent *event) |
This event handler can be reimplemented in a subclass to receive timer events for the object. | |
virtual void | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
virtual void | customEvent (QEvent *event) |
This event handler can be reimplemented in a subclass to receive custom events. | |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
![]() | |
QSurface (SurfaceClass type) | |
Creates a surface with the given type. | |
![]() | |
QScopedPointer< QObjectData > | d_ptr |
![]() | |
SurfaceClass | m_type |
QSurfacePrivate * | m_reserved |
![]() | |
QString | objectName |
the name of this object | |
![]() | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
\inmodule QtGui
The QOffscreenSurface class represents an offscreen surface in the underlying platform.
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.
Definition at line 20 of file qoffscreensurface.h.
|
explicit |
Creates an offscreen surface for the targetScreen with the given parent.
The underlying platform surface is not created until create() is called.
Definition at line 70 of file qoffscreensurface.cpp.
References QObject::connect(), d, QObject::destroyed(), QGuiApplication::primaryScreen, Q_ASSERT, SIGNAL, and SLOT.
QOffscreenSurface::~QOffscreenSurface | ( | ) |
Destroys the offscreen surface.
Definition at line 89 of file qoffscreensurface.cpp.
References destroy().
void 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.
Definition at line 117 of file qoffscreensurface.cpp.
References QPlatformIntegration::createPlatformOffscreenSurface(), QThread::currentThread(), Qt::CustomizeWindowHint, d, e, Qt::FramelessWindowHint, QSurface::OpenGLSurface, QGuiApplicationPrivate::platformIntegration(), qGuiApp, qt_window_private(), qWarning, QList< T >::removeOne(), QCoreApplication::sendEvent(), QWindowPrivate::setAutomaticPositionAndResizeEnabled(), QPlatformSurfaceEvent::SurfaceCreated, and QGuiApplicationPrivate::window_list.
Referenced by CurrentContext::CurrentContext(), WaylandEglClientBufferIntegrationPrivate::ensureContext(), WaylandEglStreamClientBufferIntegrationPrivate::ensureContext(), QOpenGLWidgetPrivate::initialize(), QGLXContext::queryDummyContext(), and setScreen().
void QOffscreenSurface::destroy | ( | ) |
Releases the native platform resources associated with this offscreen surface.
Definition at line 153 of file qoffscreensurface.cpp.
References d, e, QCoreApplication::sendEvent(), and QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed.
Referenced by ~QOffscreenSurface(), and setScreen().
|
overridevirtual |
Returns the actual format of this offscreen surface.
After the offscreen surface has been created, this function will return the actual surface format of the surface. It might differ from the requested format if the requested format could not be fulfilled by the platform.
Implements QSurface.
Definition at line 222 of file qoffscreensurface.cpp.
References d.
Referenced by setFormat().
QPlatformOffscreenSurface * QOffscreenSurface::handle | ( | ) | const |
Returns the platform offscreen surface corresponding to the offscreen surface.
Definition at line 305 of file qoffscreensurface.cpp.
References d.
bool QOffscreenSurface::isValid | ( | ) | const |
Returns true
if this offscreen surface is valid; otherwise returns false
.
The offscreen surface is valid if the platform resources have been successfully allocated.
Definition at line 176 of file qoffscreensurface.cpp.
References d.
QSurfaceFormat QOffscreenSurface::requestedFormat | ( | ) | const |
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 setFormat().
Definition at line 207 of file qoffscreensurface.cpp.
References d.
Referenced by QAndroidPlatformIntegration::createPlatformOffscreenSurface(), QEglFSIntegration::createPlatformOffscreenSurface(), QXcbEglIntegration::createPlatformOffscreenSurface(), QCocoaOffscreenSurface::format(), and QIOSOffscreenSurface::format().
QScreen * QOffscreenSurface::screen | ( | ) | const |
Returns the screen to which the offscreen surface is connected.
Definition at line 246 of file qoffscreensurface.cpp.
References d.
Referenced by QEglFSIntegration::createPlatformOffscreenSurface(), QXcbEglIntegration::createPlatformOffscreenSurface(), QXcbIntegration::createPlatformOffscreenSurface(), and QPlatformOffscreenSurface::screen().
|
signal |
This signal is emitted when an offscreen surface's screen changes, either by being set explicitly with setScreen(), or automatically when the window's screen is removed.
Referenced by setScreen().
void QOffscreenSurface::setFormat | ( | const QSurfaceFormat & | format | ) |
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.
Definition at line 191 of file qoffscreensurface.cpp.
Referenced by CurrentContext::CurrentContext(), WaylandEglClientBufferIntegrationPrivate::ensureContext(), WaylandEglStreamClientBufferIntegrationPrivate::ensureContext(), and QOpenGLWidgetPrivate::initialize().
Sets the screen to which the offscreen surface is connected.
If the offscreen surface has been created, it will be recreated on the newScreen.
Definition at line 259 of file qoffscreensurface.cpp.
References QObject::connect(), create(), d, destroy(), QObject::destroyed(), disconnect(), emit, QCoreApplication::instance(), QGuiApplication::primaryScreen, screenChanged(), SIGNAL, and SLOT.
Referenced by QOpenGLWidgetPrivate::initialize().
|
overridevirtual |
Returns the size of the offscreen surface.
Implements QSurface.
Definition at line 235 of file qoffscreensurface.cpp.
References d.
Referenced by QEGLPbuffer::QEGLPbuffer(), QGLXPbuffer::QGLXPbuffer(), and QWasmOffscreenSurface::QWasmOffscreenSurface().
|
overrideprivatevirtual |
Returns the platform surface corresponding to the offscreen surface.
Implements QSurface.
Definition at line 329 of file qoffscreensurface.cpp.
References d.
|
overridevirtual |
Returns the surface type of the offscreen surface.
The surface type of an offscreen surface is always QSurface::OpenGLSurface.
Implements QSurface.
Definition at line 99 of file qoffscreensurface.cpp.
References d.