Spec-Zone.ru › Qt 5.13

Класс QOffscreenSurface

Класс QOffscreenSurface представляет собой отложенную поверхность на платформе. Подробнее...

Заголовок: #include <QOffscreenSurface>
qmake: QT += gui
С момента: Qt 5.1
Наследует: QObject и QSurface

Этот класс был добавлен в Qt 5.1.

  • Список всех членов, включая унаследованные

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

QOffscreenSurface(QScreen *targetScreen = nullptr)
QOffscreenSurface(QScreen *targetScreen, QObject *parent)
virtual ~QOffscreenSurface()
void create()
void destroy()
bool isValid() const
void * nativeHandle() const
QSurfaceFormat requestedFormat() const
QScreen * screen() const
void setFormat(const QSurfaceFormat &format)
void setNativeHandle(void *handle)
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() вызывается только в главном (графическом) потоке. Затем QOffscreenSurface можно безопасно использовать с makeCurrent() в других потоках, но инициализация и уничтожение всегда должны происходить в главном (графическом) потоке.

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

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

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

QOffscreenSurface::QOffscreenSurface(QScreen *targetScreen = nullptr)

Создаёт отложенную поверхность для targetScreen.

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

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

QOffscreenSurface::QOffscreenSurface(QScreen *targetScreen, QObject *parent)

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

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

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

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

void QOffscreenSurface::screenChanged(QScreen *screen)

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

QOffscreenSurface::~QOffscreenSurface()

Уничтожает отложенную поверхность.

void QOffscreenSurface::create()

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

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

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

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

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

void QOffscreenSurface::destroy()

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

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

QSurfaceFormat QOffscreenSurface::format() const

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

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

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

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

bool QOffscreenSurface::isValid() const

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

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

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

void *QOffscreenSurface::nativeHandle() const

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

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

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

QSurfaceFormat QOffscreenSurface::requestedFormat() const

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

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

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

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

QScreen *QOffscreenSurface::screen() const

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

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

void QOffscreenSurface::setFormat(const QSurfaceFormat &format)

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

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

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

void QOffscreenSurface::setNativeHandle(void *handle)

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

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

Примечание: Интерпретация родного дескриптора зависит от платформы. Только некоторые платформы поддерживают принятие родных дескрипторов поверхностей offscreen, и платформы, которые не реализуют эту поддержку, проигнорируют дескриптор.

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

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

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-5.13/qoffscreensurface.html

Spec-Zone.ru

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