// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QQUICKRENDERCONTROL_H #define QQUICKRENDERCONTROL_H #include #include #include QT_BEGIN_NAMESPACE class QQuickWindow; class QOpenGLContext; class QQuickRenderControlPrivate; class QThread; class QRhi; class QRhiCommandBuffer; class Q_QUICK_EXPORT QQuickRenderControl : public QObject { Q_OBJECT public: explicit QQuickRenderControl(QObject *parent = nullptr); ~QQuickRenderControl() override; void prepareThread(QThread *targetThread); void setSamples(int sampleCount); int samples() const; bool initialize(); void invalidate(); void beginFrame(); void endFrame(); void polishItems(); bool sync(); void render(); static QWindow *renderWindowFor(QQuickWindow *win, QPoint *offset = nullptr); virtual QWindow *renderWindow(QPoint *offset) { Q_UNUSED(offset); return nullptr; } QQuickWindow *window() const; QRhi *rhi() const; QRhiCommandBuffer *commandBuffer() const; protected: explicit QQuickRenderControl(QQuickRenderControlPrivate &dd, QObject *parent = nullptr); Q_SIGNALS: void renderRequested(); void sceneChanged(); private: Q_DECLARE_PRIVATE(QQuickRenderControl) }; QT_END_NAMESPACE #endif // QQUICKRENDERCONTROL_H