Класс QSurfaceFormat
Класс QSurfaceFormat представляет формат QSurface. Подробнее...
| Заголовок: | #include <QSurfaceFormat> |
| qmake: | QT += gui |
| С версии: | Qt 5.0 |
Этот класс был представлен в Qt 5.0.
Публичные типы
| Перечисление | ColorSpace { DefaultColorSpace, sRGBColorSpace } |
| Перечисление | FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification } |
| Флаги | FormatOptions |
| Перечисление | OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile } |
| Перечисление | RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG } |
| Перечисление | SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer } |
Публичные функции
| QSurfaceFormat(const QSurfaceFormat &other) | |
| QSurfaceFormat(QSurfaceFormat::FormatOptions options) | |
| QSurfaceFormat() | |
| QSurfaceFormat & | operator=(const QSurfaceFormat &other) |
| ~QSurfaceFormat() | |
| int | alphaBufferSize() const |
| int | blueBufferSize() const |
| QSurfaceFormat::ColorSpace | colorSpace() const |
| int | depthBufferSize() const |
| int | greenBufferSize() const |
| bool | hasAlpha() const |
| int | majorVersion() const |
| int | minorVersion() const |
| QSurfaceFormat::FormatOptions | options() const |
| QSurfaceFormat::OpenGLContextProfile | profile() const |
| int | redBufferSize() const |
| QSurfaceFormat::RenderableType | renderableType() const |
| int | samples() const |
| void | setAlphaBufferSize(int size) |
| void | setBlueBufferSize(int size) |
| void | setColorSpace(QSurfaceFormat::ColorSpace colorSpace) |
| void | setDepthBufferSize(int size) |
| void | setGreenBufferSize(int size) |
| void | setMajorVersion(int major) |
| void | setMinorVersion(int minor) |
| void | setOption(QSurfaceFormat::FormatOption option, bool on = true) |
| void | setOptions(QSurfaceFormat::FormatOptions options) |
| void | setProfile(QSurfaceFormat::OpenGLContextProfile profile) |
| void | setRedBufferSize(int size) |
| void | setRenderableType(QSurfaceFormat::RenderableType type) |
| void | setSamples(int numSamples) |
| void | setStencilBufferSize(int size) |
| void | setStereo(bool enable) |
| void | setSwapBehavior(QSurfaceFormat::SwapBehavior behavior) |
| void | setSwapInterval(int interval) |
| void | setVersion(int major, int minor) |
| int | stencilBufferSize() const |
| bool | stereo() const |
| QSurfaceFormat::SwapBehavior | swapBehavior() const |
| int | swapInterval() const |
| bool | testOption(QSurfaceFormat::FormatOption option) const |
| QPair<int, int> | version() const |
Статические публичные члены
| QSurfaceFormat | defaultFormat() |
| void | setDefaultFormat(const QSurfaceFormat &format) |
Связанные нечлены
| bool | operator!=(const QSurfaceFormat &a, const QSurfaceFormat &b) |
| bool | operator==(const QSurfaceFormat &a, const QSurfaceFormat &b) |
Подробное описание
Формат включает размер буферов цветов, красного, зеленого и синего; размер буфера альфы; размер буферов глубины и трафарета; и количество выборок на пиксель для многовыборочного сэмплирования. Кроме того, формат содержит параметры конфигурации поверхности, такие как профиль OpenGL и версия для рендеринга, включение или выключение стерео буферов и поведение обмена.
Примечание: При устранении неполадок с контекстом или форматом окна может быть полезно включить категорию логгирования qt.qpa.gl. В зависимости от платформы это может вывести полезную отладочную информацию, касающуюся инициализации OpenGL и конфигураций нативных визуальных или фреймбуферов, к которым QSurfaceFormat сопоставляется.
Документация по типам членов
enum QSurfaceFormat::ColorSpace
Этот перечисление используется для указания предпочтительного цветового пространства, контролируя, может ли связанный с окном дефолтный фреймбуфер выполнять обновления и смешивание в заданном кодировании вместо стандартных линейных операций.
| Константа | Значение | Описание |
|---|---|---|
QSurfaceFormat::DefaultColorSpace |
0 |
По умолчанию, не указанное цветовое пространство. |
QSurfaceFormat::sRGBColorSpace |
1 |
Когда GL_ARB_framebuffer_sRGB или GL_EXT_framebuffer_sRGB поддерживается платформой и это значение установлено, окно будет создано с фреймбуфером по умолчанию, совместимым с sRGB. Обратите внимание, что некоторые платформы могут возвращать окна с фреймбуфером по умолчанию, совместимым с sRGB, даже без явного запроса. |
enum QSurfaceFormat::FormatOptionflags QSurfaceFormat::FormatOptions
Этот перечисление содержит параметры формата для использования с QSurfaceFormat.
| Константа | Значение | Описание |
|---|---|---|
QSurfaceFormat::StereoBuffers |
0x0001 |
Используется для запроса стерео буферов в формате поверхности. |
QSurfaceFormat::DebugContext |
0x0002 |
Используется для запроса контекста отладки с дополнительной информацией об отладке. |
QSurfaceFormat::DeprecatedFunctions |
0x0004 |
Используется для запроса включения устаревших функций в профиль контекста OpenGL. Если не указано, вы получите совместимый контекст без поддержки функций, отмеченных как устаревшие. Это требует версии OpenGL 3.0 или выше. |
QSurfaceFormat::ResetNotification |
0x0008 |
Включает уведомления о сбросе контекста OpenGL. Статус затем можно запросить с помощью функции isValid() контекста. Обратите внимание, что отсутствие этого флага не гарантирует, что потеря состояния контекста никогда не произойдет. Кроме того, некоторые реализации могут выбрать отчет о потере контекста независимо от этого флага. |
Тип FormatOptions является типом-псевдонимом для QFlags<FormatOption>. Он хранит логическое ИЛИ комбинацию значений FormatOption.
enum QSurfaceFormat::OpenGLContextProfile
Этот перечисление используется для указания профиля контекста OpenGL, в сочетании с QSurfaceFormat::setMajorVersion() и QSurfaceFormat::setMinorVersion().
Профили доступны в OpenGL 3.2 и выше и используются для выбора между ограниченным основным профилем и профилем совместимости, который может содержать устаревшую поддержку функциональности.
Обратите внимание, что основной профиль все еще может содержать функциональность, которая устарела и запланирована на удаление в более поздней версии. Чтобы получить доступ к устаревшим функциям основного профиля в наборе версии OpenGL, вы можете использовать параметр формата QSurfaceFormat QSurfaceFormat::DeprecatedFunctions.
| Константа | Значение | Описание |
|---|---|---|
QSurfaceFormat::NoProfile |
0 |
Версия OpenGL ниже 3.2. Для 3.2 и выше это то же самое, что и CoreProfile. |
QSurfaceFormat::CoreProfile |
1 |
Функциональность, устаревшая в версии OpenGL 3.0, недоступна. |
QSurfaceFormat::CompatibilityProfile |
2 |
Доступна функциональность из предыдущих версий OpenGL. |
enum QSurfaceFormat::RenderableType
Это перечисление определяет рендеринг бэкенд для поверхности.
| Константа | Значение | Описание |
|---|---|---|
QSurfaceFormat::DefaultRenderableType |
0x0 |
По умолчанию, не указанный метод рендеринга |
QSurfaceFormat::OpenGL |
0x1 |
Рендеринг настольного OpenGL |
QSurfaceFormat::OpenGLES |
0x2 |
Рендеринг OpenGL ES 2.0 |
QSurfaceFormat::OpenVG |
0x4 |
Рендеринг Open Vector Graphics |
enum QSurfaceFormat::SwapBehavior
Это перечисление используется QSurfaceFormat для указания поведения обмена поверхностью. Поведение обмена в основном прозрачно для приложения, но оно влияет на такие факторы, как задержка рендеринга и пропускная способность.
| Константа | Значение | Описание |
|---|---|---|
QSurfaceFormat::DefaultSwapBehavior |
0 |
По умолчанию, не указанное поведение обмена платформы. |
QSurfaceFormat::SingleBuffer |
1 |
Используется для запроса одиночного буферирования, что может привести к мерцанию, когда рендеринг OpenGL выполняется непосредственно на экран без промежуточного буфера вне экрана. |
QSurfaceFormat::DoubleBuffer |
2 |
Как правило, это поведение обмена по умолчанию на настольных платформах, состоящее из одного буфера заднего плана и одного буфера переднего плана. Рендеринг выполняется в буфер заднего плана, а затем буферы заднего и переднего плана меняются местами или содержимое буфера заднего плана копируется в буфер переднего плана в зависимости от реализации. |
QSurfaceFormat::TripleBuffer |
3 |
Это поведение обмена иногда используется для снижения риска пропуска кадра, когда скорость рендеринга едва успевает за частотой обновления экрана. В зависимости от платформы, это также может привести к несколько более эффективному использованию графического процессора благодаря улучшенному поведению конвейера. Тройное буферирование связано с дополнительным потреблением памяти и задержкой на кадр и может не поддерживаться в зависимости от базовой платформы. |
Документация по функциям членов
QSurfaceFormat::QSurfaceFormat(const QSurfaceFormat &other)
Создает копию other.
QSurfaceFormat::QSurfaceFormat(QSurfaceFormat::FormatOptions options)
Создает QSurfaceFormat с заданными параметрами options.
QSurfaceFormat::QSurfaceFormat()
Создает QSurfaceFormat с инициализацией по умолчанию.
Примечание: По умолчанию запрашивается OpenGL 2.0, поскольку это обеспечивает максимальную переносимость между платформами и реализациями OpenGL.
QSurfaceFormat &QSurfaceFormat::operator=(const QSurfaceFormat &other)
Присваивает other этому объекту.
QSurfaceFormat::~QSurfaceFormat()
Уничтожает QSurfaceFormat.
int QSurfaceFormat::alphaBufferSize() const
Возвращает размер альфа-канала буфера цвета в битах.
См. также setAlphaBufferSize().
int QSurfaceFormat::blueBufferSize() const
Возвращает размер синего канала буфера цвета в битах.
См. также setBlueBufferSize().
QSurfaceFormat::ColorSpace QSurfaceFormat::colorSpace() const
Возвращает цветовое пространство.
Эта функция была добавлена в Qt 5.10.
См. также setColorSpace().
[static] QSurfaceFormat QSurfaceFormat::defaultFormat()
Возвращает глобальный по умолчанию формат поверхности.
Когда setDefaultFormat() не вызывается, это — QSurfaceFormat с конструктором по умолчанию.
Эта функция была добавлена в Qt 5.4.
См. также setDefaultFormat().
int QSurfaceFormat::depthBufferSize() const
Возвращает размер буфера глубины.
См. также setDepthBufferSize().
int QSurfaceFormat::greenBufferSize() const
Возвращает размер зеленого канала буфера цвета в битах.
См. также setGreenBufferSize().
bool QSurfaceFormat::hasAlpha() const
Возвращает true если размер буфера альфа-канала больше нуля.
Это означает, что поверхность может быть использована с эффектами прозрачности на уровне пикселей.
int QSurfaceFormat::majorVersion() const
Возвращает основную версию OpenGL.
Версия по умолчанию — 2.0.
См. также setMajorVersion().
int QSurfaceFormat::minorVersion() const
Возвращает дополнительную версию OpenGL.
См. также setMinorVersion().
QSurfaceFormat::FormatOptions QSurfaceFormat::options() const
Возвращает текущие установленные опции формата.
Эта функция была добавлена в Qt 5.3.
См. также setOption(), setOptions() и testOption().
QSurfaceFormat::OpenGLContextProfile QSurfaceFormat::profile() const
Получает настроенный профиль контекста OpenGL.
Это значение игнорируется, если запрошенная версия OpenGL меньше 3.2.
См. также setProfile().
int QSurfaceFormat::redBufferSize() const
Возвращает размер красного канала буфера цвета в битах.
См. также setRedBufferSize().
QSurfaceFormat::RenderableType QSurfaceFormat::renderableType() const
Получает тип рендерируемого объекта.
Выбор между настольным OpenGL, OpenGL ES и OpenVG.
См. также setRenderableType().
int QSurfaceFormat::samples() const
Возвращает количество выборок на пиксель при включенном многовыборочном сэмплировании, или -1 при выключенном. Значение по умолчанию — -1.
См. также setSamples().
void QSurfaceFormat::setAlphaBufferSize(int size)
Устанавливает желаемый размер альфа-канала буфера цвета в битах.
См. также alphaBufferSize().
void QSurfaceFormat::setBlueBufferSize(int size)
Устанавливает желаемый размер синего канала буфера цвета в битах.
Примечание: В macOS убедитесь, что установлены размеры всех цветовых каналов, в противном случае это значение не будет иметь эффекта. Если один из размеров буферов не задан, используется текущая глубина цвета экрана.
См. также blueBufferSize().
void QSurfaceFormat::setColorSpace(QSurfaceFormat::ColorSpace colorSpace)
Устанавливает предпочтительный цветовой пространство.
Например, это позволяет запрашивать окна с буферами по умолчанию, которые поддерживают sRGB на платформах, которые его поддерживают.
Примечание: Если запрошенное цветовое пространство не поддерживается платформой, запрос игнорируется. Проверьте QSurfaceFormat после создания окна, чтобы убедиться, что запрос на цветовое пространство был учтен.
Примечание: Это значение определяет, может ли буфер по умолчанию окна выполнять обновления и смешивание в данном цветовом пространстве. Оно не изменяет вывод приложения самостоятельно. Код рендеринга приложения все равно должен явно использовать соответствующие вызовы OpenGL, чтобы разрешить выполнение обновлений и смешивания в заданном цветовом пространстве вместо стандартных линейных операций.
Эта функция была добавлена в Qt 5.10.
См. также colorSpace().
[static] void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format)
Устанавливает глобальный по умолчанию формат поверхности format.
Этот формат используется по умолчанию в QOpenGLContext, QWindow, QOpenGLWidget и подобных классах.
Он всегда может быть переопределен на уровне каждого экземпляра с помощью функции setFormat() соответствующего класса. Однако часто удобнее установить формат для всех окон в начале приложения. Это также гарантирует правильное поведение в ситуациях, когда требуется общий контекст, потому что установка формата с помощью этой функции гарантирует, что все контексты и поверхности, даже те, которые создаются Qt внутри, будут использовать один и тот же формат.
Примечание: При использовании Qt::AA_ShareOpenGLContexts настоятельно рекомендуется вызывать эту функцию до создания QGuiApplication или QApplication. В противном случае format не будет применена к глобальному совмещенному контексту, и могут возникнуть проблемы с совместным использованием контекста.
Эта функция была добавлена в Qt 5.4.
См. также defaultFormat().
void QSurfaceFormat::setDepthBufferSize(int size)
Устанавливает минимальный размер буфера глубины в size.
См. также depthBufferSize().
void QSurfaceFormat::setGreenBufferSize(int size)
Устанавливает желаемый размер зеленого канала буфера цвета в битах.
Примечание: В macOS убедитесь, что установлены размеры всех цветовых каналов, в противном случае это значение не будет иметь эффекта. Если один из размеров буферов не задан, используется текущая глубина цвета экрана.
См. также greenBufferSize().
void QSurfaceFormat::setMajorVersion(int major)
Устанавливает желаемую основную версию OpenGL.
См. также majorVersion().
void QSurfaceFormat::setMinorVersion(int minor)
Устанавливает желаемую дополнительную версию OpenGL.
Версия по умолчанию — 2.0.
См. также minorVersion().
void QSurfaceFormat::setOption(QSurfaceFormat::FormatOption option, bool on = true)
Устанавливает опцию формата option, если on равно true; в противном случае, очищает опцию.
Эта функция была добавлена в Qt 5.3.
См. также setOptions(), options() и testOption().
void QSurfaceFormat::setOptions(QSurfaceFormat::FormatOptions options)
Устанавливает опции формата на options.
Эта функция была добавлена в Qt 5.3.
См. также options() и testOption().
void QSurfaceFormat::setProfile(QSurfaceFormat::OpenGLContextProfile profile)
Устанавливает желаемый профиль контекста OpenGL profile.
Это значение игнорируется, если запрошенная версия OpenGL меньше 3.2.
См. также profile().
void QSurfaceFormat::setRedBufferSize(int size)
Устанавливает желаемый размер красного канала буфера цвета в битах.
Примечание: В macOS убедитесь, что установлены размеры всех цветовых каналов, в противном случае это значение не будет иметь эффекта. Если один из размеров буферов не задан, используется текущая глубина цвета экрана.
См. также redBufferSize().
void QSurfaceFormat::setRenderableType(QSurfaceFormat::RenderableType type)
Устанавливает желаемый тип рендерируемого объекта.
Выбирает между настольным OpenGL, OpenGL ES и OpenVG.
См. также renderableType().
void QSurfaceFormat::setSamples(int numSamples)
Устанавливает предпочтительное количество сэмплов на пиксель при включенном сэмплировании (multisampling) в numSamples. По умолчанию сэмплирование выключено.
См. также samples().
void QSurfaceFormat::setStencilBufferSize(int size)
Устанавливает предпочтительный размер буфера трафарета в size бит.
См. также stencilBufferSize().
void QSurfaceFormat::setStereo(bool enable)
Если enable равно true, включает стереобуферизацию; в противном случае отключает стереобуферизацию.
Стереобуферизация отключена по умолчанию.
Стереобуферизация предоставляет дополнительные цветовые буферы для генерации изображений для левого и правого глаза.
См. также stereo().
void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
Устанавливает поведение обмена буферов (swap) для поверхности.
Поведение обмена буферов определяет, нужно ли использовать одно-, двойное или тройное буферирование. По умолчанию, DefaultSwapBehavior, используется платформа по умолчанию.
См. также swapBehavior().
void QSurfaceFormat::setSwapInterval(int interval)
Устанавливает предпочтительный интервал обмена буферами. Интервал обмена буферами определяет минимальное количество кадров видео, отображаемых перед обменом буферами. Это можно использовать для синхронизации отрисовки GL в окне с вертикальной частотой обновления экрана.
Установка значения interval равного 0 отключит синхронизацию с вертикальной частотой обновления, любое значение больше 0 включит вертикальную синхронизацию. Установка interval в более высокое значение, например 10, приводит к 10 вертикальным обновлениям между каждым обменом буферами.
По умолчанию интервал равен 1.
Изменение интервала обмена буферами может не поддерживаться базовой платформой. В этом случае запрос будет проигнорирован.
Функция была добавлена в Qt 5.3.
См. также swapInterval().
void QSurfaceFormat::setVersion(int major, int minor)
Устанавливает желаемые major и minor версии OpenGL.
По умолчанию версия равна 2.0.
См. также version().
int QSurfaceFormat::stencilBufferSize() const
Возвращает размер буфера трафарета в битах.
См. также setStencilBufferSize().
bool QSurfaceFormat::stereo() const
Возвращает true если стереобуферизация включена; в противном случае возвращает false. Стереобуферизация отключена по умолчанию.
См. также setStereo().
QSurfaceFormat::SwapBehavior QSurfaceFormat::swapBehavior() const
Возвращает настроенное поведение обмена буферами.
См. также setSwapBehavior().
int QSurfaceFormat::swapInterval() const
Возвращает интервал обмена буферами.
Функция была добавлена в Qt 5.3.
См. также setSwapInterval().
bool QSurfaceFormat::testOption(QSurfaceFormat::FormatOption option) const
Возвращает true, если опция формата option установлена; в противном случае возвращает false.
Функция была добавлена в Qt 5.3.
См. также options().
QPair<int, int> QSurfaceFormat::version() const
Возвращает QPair<int, int>, представляющий версию OpenGL.
Полезно для проверок версий, например, format.version() >= qMakePair(3, 2)
См. также setVersion().
Связанные нечленные функции
bool QSurfaceFormat::operator!=(const QSurfaceFormat &a, const QSurfaceFormat &b)
Возвращает false если все опции двух объектов QSurfaceFormat a и b равны; в противном случае возвращает true.
bool QSurfaceFormat::operator==(const QSurfaceFormat &a, const QSurfaceFormat &b)
Возвращает true если все опции двух объектов QSurfaceFormat a и b равны.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qsurfaceformat.html