Spec-Zone.ru › Qt 6.0

Класс QOffscreenSurface

Класс QOffscreenSurface представляет собой поверхность вне экрана в базовой платформе. Подробнее...

Заголовок: #include <QOffscreenSurface>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
С момента: Qt 5.1
Наследует: QObject и QSurface
  • Список всех членов, включая унаследованные члены

Открытые функции

QOffscreenSurface(QScreen *targetScreen = nullptr, QObject *parent = nullptr)
virtual ~QOffscreenSurface()
void create()
void destroy()
bool isValid() const
QNativeInterface * nativeInterface() const
QSurfaceFormat requestedFormat() const
QScreen * screen() const
void setFormat(const QSurfaceFormat &format)
void setScreen(QScreen *newScreen)

Переопределённые открытые функции

virtual QSurfaceFormat format() const override
virtual QSize size() const override
virtual QSurface::SurfaceType surfaceType() const override

Сигналы

void screenChanged(QScreen *screen)

Подробное описание

QOffscreenSurface предназначен для использования с QOpenGLContext, чтобы позволить отрисовку с OpenGL в произвольном потоке без необходимости создания QWindow.

Несмотря на то, что поверхность, как правило, отображается, пиксели поверхности недоступны. QOffscreenSurface следует использовать только для создания ресурсов OpenGL, таких как текстуры или объекты буфера кадра.

Приложение обычно использует QOffscreenSurface для выполнения некоторых длительных задач в отдельном потоке, чтобы избежать блокировки основного потока отрисовки. Ресурсы, созданные в контексте QOffscreenSurface, могут быть объединены с основным контекстом OpenGL. Некоторые распространённые случаи использования — асинхронные загрузки текстур или отрисовка в QOpenGLFramebufferObject.

Реализация поверхности вне экрана зависит от базовой платформы, но обычно она использует буфер пикселей (pbuffer). Если платформа не реализует или не поддерживает поверхности вне экрана, QOffscreenSurface будет использовать невидимый QWindow внутри.

Примечание: Из-за того, что QOffscreenSurface поддерживается QWindow на некоторых платформах, приложения кросс-платформ должны гарантировать, что create() вызывается только в основном (GUI) потоке. Затем QOffscreenSurface можно безопасно использовать с makeCurrent() в других потоках, но инициализация и уничтожение всегда должны происходить в основном (GUI) потоке.

Примечание: Чтобы создать поверхность вне экрана, которая гарантированно будет совместима с данным контекстом и окном, убедитесь, что формат установлен на фактический формат контекста или окна, то есть QSurfaceFormat, возвращённый QOpenGLContext::format() или QWindow::format() после создания контекста или окна. Передача формата, возвращённого QWindow::requestedFormat() в setFormat(), может привести к несовместимой поверхности вне экрана, поскольку интерфейс системы окон может предложить разные конфигурации для оконных и pbuffer-поверхностей.

Примечание: Некоторые платформы могут использовать расширение контекста без поверхности (например, EGL_KHR_surfaceless_context), если оно доступно. В этом случае основной нативной поверхности не будет.

Документация по членам-функциям

[since 5.10] QOffscreenSurface::QOffscreenSurface(QScreen *targetScreen = nullptr, QObject *parent = nullptr)

Создаёт поверхность вне экрана для targetScreen с указанным parent.

Базовая поверхность платформы не создаётся до вызова create().

Эта функция была добавлена в Qt 5.10.

См. также setScreen() и create().

[signal] void QOffscreenSurface::screenChanged(QScreen *screen)

Этот сигнал излучается, когда экран поверхности вне экрана изменяется, либо явно устанавливается с помощью setScreen(), либо автоматически, когда экран окна удаляется.

[virtual] QOffscreenSurface::~QOffscreenSurface()

Уничтожает поверхность вне экрана.

void QOffscreenSurface::create()

Выделяет платформенные ресурсы, связанные с поверхностью вне экрана.

В этот момент формат поверхности, установленный с помощью setFormat(), разрешается в реальную нативную поверхность.

Вызовите destroy(), чтобы освободить платформенные ресурсы при необходимости.

Примечание: Некоторые платформы требуют вызова этой функции в главном (GUI) потоке.

См. также destroy().

void QOffscreenSurface::destroy()

Освобождает нативные платформенные ресурсы, связанные с этой поверхностью вне экрана.

См. также create().

[override virtual] QSurfaceFormat QOffscreenSurface::format() const

Реализует: QSurface::format() const.

Возвращает фактический формат этой поверхности вне экрана.

После создания поверхности вне экрана эта функция вернёт фактический формат поверхности. Он может отличаться от запрошенного формата, если платформа не может его выполнить.

См. также setFormat(), create() и requestedFormat().

bool QOffscreenSurface::isValid() const

Возвращает true , если эта поверхность вне экрана допустима; в противном случае возвращает false.

Поверхность вне экрана допустима, если платформенные ресурсы успешно выделены.

См. также create().

template <typename QNativeInterface> QNativeInterface *QOffscreenSurface::nativeInterface() const

Возвращает нативный интерфейс заданного типа для поверхности.

Эта функция предоставляет доступ к платформенно-специфическому функционалу QOffScreenSurface, как определено в пространстве имён QNativeInterface:

QNativeInterface::QAndroidOffscreenSurface

Нативный интерфейс для поверхности вне экрана на Android

Если запрашиваемый интерфейс недоступен, возвращается nullptr.

QSurfaceFormat QOffscreenSurface::requestedFormat() const

Возвращает запрошенный формат поверхности для этой поверхности вне экрана.

Если запрошенный формат не поддерживается реализацией платформы, requestedFormat будет отличаться от фактического формата поверхности вне экрана.

Это значение установлено с помощью setFormat().

См. также setFormat() и format().

QScreen *QOffscreenSurface::screen() const

Возвращает экран, к которому подключена поверхность вне экрана.

См. также setScreen().

void QOffscreenSurface::setFormat(const QSurfaceFormat &format)

Устанавливает формат offscreen поверхности format.

Формат поверхности будет решен в функции create(). Вызов этой функции после create() не перерешит формат поверхности родной поверхности.

См. также format(), create() и destroy().

void QOffscreenSurface::setScreen(QScreen *newScreen)

Устанавливает экран, к которому подключена offscreen поверхность.

Если offscreen поверхность была создана, она будет пересоздана на newScreen.

См. также screen().

[override virtual] QSize QOffscreenSurface::size() const

Переопределяет: QSurface::size() const.

Возвращает размер offscreen поверхности.

[override virtual] QSurface::SurfaceType QOffscreenSurface::surfaceType() const

Переопределяет: QSurface::surfaceType() const.

Возвращает тип поверхности offscreen поверхности.

Тип поверхности offscreen поверхности всегда равен QSurface::OpenGLSurface.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qoffscreensurface.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API