Класс QSurfaceFormat
Класс QSurfaceFormat представляет формат QSurface. Подробнее...
| Заголовок: | #include <QSurfaceFormat> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| С версии: | Qt 5.0 |
Публичные типы
| Перечисление | ПространствоЦветов { ПространствоЦветовПоУмолчанию, sRGBПространствоЦветов } |
| Перечисление | ПараметрФормата { СтереоБуферы, ОтладкаКонтекста, УстаревшиеФункции, УведомлениеОПерезагрузке } |
| Флаги | ПараметрыФормата |
| Перечисление | ПрофильКонтекстаOpenGL { БезПрофиля, ПрофильЯдра, ПрофильСовместимости } |
| Перечисление | ТипОтображаемого { ТипОтображаемогоПоУмолчанию, OpenGL, OpenGLES, OpenVG } |
| Перечисление | ПоведениеОбмена { ПоведениеОбменаПоУмолчанию, ОдноБуферный, ДвухБуферный, ТрехБуферный } |
Публичные функции
| QSurfaceFormat(const QSurfaceFormat &other) | |
| QSurfaceFormat(QSurfaceFormat::FormatOptions options) | |
| QSurfaceFormat() | |
| QSurfaceFormat & | operator=(const QSurfaceFormat &other) |
| ~QSurfaceFormat() | |
| int | alphaBufferSize() const |
| int | blueBufferSize() const |
| const QColorSpace & | 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(const QColorSpace &colorSpace) |
| 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 &lhs, const QSurfaceFormat &rhs) |
| bool | operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
Подробное описание
Формат включает размер цветовых буферов, красного, зеленого и синего каналов; размер буфера альфа-канала; размер буферов глубины и трафарета; и количество выборок на пиксель для многовыборочного сэмплирования. Кроме того, формат содержит параметры конфигурации поверхности, такие как профиль и версия 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() контекста. Обратите внимание, что отсутствие этого флага не гарантирует, что потеря состояния контекста никогда не произойдет. Кроме того, некоторые реализации могут выбрать уведомление о потере контекста независимо от этого флага. Платформы, которые поддерживают динамическое включение мониторинга потери контекста, например, Windows с WGL или Linux/X11 (xcb) с GLX, будут отслеживать статус в каждом вызове makeCurrent(). Дополнительная информация по этому вопросу содержится в 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().
[since 5.10] const QColorSpace &QSurfaceFormat::colorSpace() const
Возвращает цветовое пространство.
Эта функция была добавлена в Qt 5.10.
См. также setColorSpace().
[static, since 5.4] 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().
[since 5.3] 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)
Устанавливает желаемый размер синего канала буфера цвета в битах.
См. также blueBufferSize().
[since 6.0] void QSurfaceFormat::setColorSpace(const QColorSpace &colorSpace)
Устанавливает предпочтительное цветовое пространство colorSpace.
Например, это позволяет запросить окна с буферами по умолчанию, которые поддерживают sRGB на платформах, которые это поддерживают.
Примечание: Если запрошенное цветовое пространство не поддерживается платформой, запрос игнорируется. Проверьте QSurfaceFormat после создания окна, чтобы убедиться, что запрос цветового пространства был удовлетворен.
Примечание: Эта настройка определяет, способен ли буфер по умолчанию окна обновляться и смешивать цвета в данном цветовом пространстве. Она не изменяет вывод приложения самостоятельно. Код рендеринга приложения по-прежнему должен использовать соответствующие вызовы OpenGL для включения обновлений и смешивания в заданном цветовом пространстве вместо стандартных линейных операций.
Функция была добавлена в Qt 6.0.
См. также colorSpace().
[since 5.10] void QSurfaceFormat::setColorSpace(QSurfaceFormat::ColorSpace colorSpace)
Это перегруженная функция.
Устанавливает цветовое пространство на одно из предопределенных значений.
Функция была добавлена в Qt 5.10.
См. также colorSpace().
[static, since 5.4] 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)
Устанавливает желаемый размер зеленого канала буфера цвета в битах.
См. также greenBufferSize().
void QSurfaceFormat::setMajorVersion(int major)
Устанавливает желаемую главную версию OpenGL.
См. также majorVersion().
void QSurfaceFormat::setMinorVersion(int minor)
Устанавливает желаемую второстепенную версию OpenGL.
По умолчанию версия 2.0.
См. также minorVersion().
[since 5.3] void QSurfaceFormat::setOption(QSurfaceFormat::FormatOption option, bool on = true)
Устанавливает опцию формата option, если on true; в противном случае очищает опцию.
Функция была добавлена в Qt 5.3.
См. также setOptions(), options(), и testOption().
[since 5.3] 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)
Устанавливает желаемый размер красного канала буфера цвета в битах.
См. также redBufferSize().
void QSurfaceFormat::setRenderableType(QSurfaceFormat::RenderableType type)
Устанавливает желаемый тип рендерируемого объекта.
Выбор между настольной версией OpenGL, OpenGL ES и OpenVG.
См. также renderableType().
void QSurfaceFormat::setSamples(int numSamples)
Устанавливает желаемое количество сэмплов на пиксель при включенном сэмплировании на numSamples. По умолчанию сэмплирование выключено.
См. также samples().
void QSurfaceFormat::setStencilBufferSize(int size)
Установите предпочтительный размер буфера трафарета в size бит.
См. также stencilBufferSize().
void QSurfaceFormat::setStereo(bool enable)
Если enable равно true, то включается стерео-буферизация; в противном случае она отключается.
Стерео-буферизация по умолчанию отключена.
Стерео-буферизация предоставляет дополнительные цветовые буферы для генерации изображений для левого и правого глаза.
См. также stereo().
void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
Установите поведение обмена поверхностью.
Поведение обмена указывает, нужна ли однократная, двойная или тройная буферизация. По умолчанию, DefaultSwapBehavior, задаёт стандартное поведение обмена для платформы.
См. также swapBehavior().
[since 5.3] 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().
[since 5.3] int QSurfaceFormat::swapInterval() const
Возвращает интервал обмена.
Эта функция была добавлена в Qt 5.3.
См. также setSwapInterval().
[since 5.3] 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 operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
Возвращает false если все параметры двух объектов QSurfaceFormat lhs и rhs равны; в противном случае возвращает true.
bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
Возвращает true если все параметры двух объектов QSurfaceFormat lhs и rhs равны.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qsurfaceformat.html