Класс QSurfaceFormat
Класс QSurfaceFormat представляет формат QSurface. Подробнее...
| Заголовок: | #include <QSurfaceFormat> |
| qmake: | QT += gui |
| С момента: | Qt 5.0 |
Этот класс был введён в Qt 5.0.
Открытые типы
| Перечисление | Цветное пространство { DefaultColorSpace, sRGBColorSpace } |
| Перечисление | Параметр формата { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification } |
| Флаги | Параметры формата |
| Перечисление | Профиль контекста OpenGL { NoProfile, CoreProfile, CompatibilityProfile } |
| Перечисление | Тип отображаемого объекта { DefaultRenderableType, OpenGL, OpenGLES, OpenVG } |
| Перечисление | Поведение обмена { 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 сопоставляется.
Документация по типу членов
перечисление QSurfaceFormat::ColorSpace
Это перечисление используется для указания предпочтительного цветового пространства, управляя возможностью обновления и смешивания окна с помощью заданного кодирования вместо стандартных линейных операций.
| Константа | Значение | Описание |
|---|---|---|
QSurfaceFormat::DefaultColorSpace |
0 |
По умолчанию, неопределенное цветовое пространство. |
QSurfaceFormat::sRGBColorSpace |
1 |
Когда GL_ARB_framebuffer_sRGB или GL_EXT_framebuffer_sRGB поддерживаются платформой и это значение установлено, окно будет создано с буфером по умолчанию, поддерживающим sRGB. Обратите внимание, что некоторые платформы могут возвращать окна с буфером по умолчанию, поддерживающим sRGB, даже если это не запрошено явно. |
перечисление QSurfaceFormat::FormatOptionфлаги 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 по оператору ИЛИ.
перечисление 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. |
перечисление QSurfaceFormat::RenderableType
Это перечисление определяет бэкенд отрисовки для поверхности.
| Константа | Значение | Описание |
|---|---|---|
QSurfaceFormat::DefaultRenderableType |
0x0 |
По умолчанию, неопределенный метод отрисовки |
QSurfaceFormat::OpenGL |
0x1 |
Отрисовка с помощью Desktop OpenGL |
QSurfaceFormat::OpenGLES |
0x2 |
Отрисовка с помощью OpenGL ES 2.0 |
QSurfaceFormat::OpenVG |
0x4 |
Отрисовка Open Vector Graphics |
перечисление 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().
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)
Установить желаемый размер синего канала буфера цвета в битах.
См. также blueBufferSize().
void QSurfaceFormat::setColorSpace(QSurfaceFormat::ColorSpace colorSpace)
Устанавливает предпочитаемый цветовой пространство.
Например, это позволяет запрашивать окна с буферами кадров по умолчанию, которые поддерживают sRGB на платформах, которые его поддерживают.
Примечание: Когда запрошенное цветовое пространство не поддерживается платформой, запрос игнорируется. Проверьте QSurfaceFormat после создания окна, чтобы убедиться, что запрос цветового пространства может быть удовлетворен или нет.
Примечание: Эта настройка управляет тем, может ли буфер кадров по умолчанию окна обновляться и смешиваться в заданном цветовом пространстве. Она не изменяет вывод приложения самостоятельно. Код отрисовки приложения все равно должен использовать соответствующие вызовы OpenGL, чтобы включить обновления и смешивание в заданном цветовом пространстве вместо стандартных линейных операций.
Функция была добавлена в Qt 5.10.
См. также colorSpace().
[static] void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &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().
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.
Это значение игнорируется, если запрошенная версия 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)
Установить предпочтительный размер буфера трафарета в битах.
См. также stencilBufferSize().
void QSurfaceFormat::setStereo(bool enable)
Если enable равно true, включает стерео буферизацию; в противном случае отключает стерео буферизацию.
Стерео буферизация отключена по умолчанию.
Стерео буферизация предоставляет дополнительные буферы цвета для генерации изображений для левого и правого глаза.
См. также stereo().
void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
Установить поведение обмена поверхностью.
Поведение обмена определяет, желательно ли одиночное, двойное или тройное буферирование. По умолчанию, DefaultSwapBehavior, задает поведение обмена по умолчанию для платформы.
См. также swapBehavior().
END_OF_DOCUMENT_MARKERvoid 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 operator!=(const QSurfaceFormat &a, const QSurfaceFormat &b)
Возвращает false если все параметры двух объектов QSurfaceFormat a и b равны; в противном случае возвращает true.
bool 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.14/qsurfaceformat.html