Spec-Zone.ru › Qt 5.12

Класс QOffscreenSurface

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

Заголовок: #include <QOffscreenSurface>
qmake: QT += gui
С момента: Qt 5.1
Наследует: QObject и QSurface
  • Список всех членов, включая унаследованные
  • Устаревшие члены

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

QOffscreenSurface(QScreen *targetScreen, QObject *parent)
QOffscreenSurface(QScreen *targetScreen = nullptr)
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
  • 31 открытых функций, унаследованных от QObject
  • 6 открытых функций, унаследованных от QSurface

Сигналы

void screenChanged(QScreen *screen)
  • 2 сигнала, унаследованных от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 9 защищённых функций, унаследованных от QObject

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

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

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), если оно доступно. В этом случае не будет базовой нативной поверхности. Для случаев использования QOffscreenSurface (отрисовка в FBO, загрузка текстур) это не проблема.

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

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

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

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

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

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

QOffscreenSurface::QOffscreenSurface(QScreen *targetScreen = nullptr)

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

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

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

[virtual] QOffscreenSurface::~QOffscreenSurface()

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

void QOffscreenSurface::create()

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

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

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

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

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

void QOffscreenSurface::destroy()

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

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

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

Переопределено из QSurface::format().

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

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

См. также 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

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

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

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

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

void QOffscreenSurface::setFormat(const QSurfaceFormat &format)

Устанавливает формат поверхности без отображения.

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

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

void QOffscreenSurface::setNativeHandle(void *handle)

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

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

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

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

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

void QOffscreenSurface::setScreen(QScreen *newScreen)

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

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

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

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

Переопределено из QSurface::size().

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

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

Переопределено из QSurface::surfaceType().

Возвращает тип поверхности поверхности без отображения.

Тип поверхности поверхности без отображения всегда QSurface::OpenGLSurface.

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

Spec-Zone.ru

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