Spec-Zone.ru › Qt 5.6

Класс QOffscreenSurface

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

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

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

QOffscreenSurface(QScreen *targetScreen = Q_NULLPTR)
virtual ~QOffscreenSurface()
void create()
void destroy()
bool isValid() const
QSurfaceFormat requestedFormat() const
QScreen * screen() const
void setFormat(const QSurfaceFormat &format)
void setScreen(QScreen *newScreen)

Реализованные открытые функции

virtual QSurfaceFormat format() const
virtual QSize size() const
virtual SurfaceType surfaceType() const
  • 31 открытая функция, унаследованная от QObject
  • 6 открытых функций, унаследованных от QSurface

Сигналы

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

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

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 11 статических открытых членов, унаследованных от 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 = Q_NULLPTR)

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

Подлежащая поверхность платформы не создаётся до тех пор, пока не будет вызван create().

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

[virtual] QOffscreenSurface::~QOffscreenSurface()

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

void QOffscreenSurface::create()

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

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

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

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

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

void QOffscreenSurface::destroy()

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

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

[virtual] QSurfaceFormat QOffscreenSurface::format() const

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

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

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

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

bool QOffscreenSurface::isValid() const

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

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

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

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)

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

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

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

void QOffscreenSurface::setScreen(QScreen *newScreen)

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

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

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

[virtual] QSize QOffscreenSurface::size() const

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

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

[virtual] 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/archives/qt-5.6/qoffscreensurface.html

Spec-Zone.ru

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