Класс QSurfaceFormat
Класс QSurfaceFormat представляет формат QSurface. Подробнее...
| Заголовок: | #include <QSurfaceFormat> |
| qmake: | QT += gui |
| С момента: | 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() | |
| QSurfaceFormat(QSurfaceFormat::FormatOptions options) | |
| QSurfaceFormat(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 & | operator=(const QSurfaceFormat &other) |
Статические открытые члены
| QSurfaceFormat | defaultFormat() |
| void | setDefaultFormat(const QSurfaceFormat &format) |
| const QMetaObject | staticMetaObject |
Связанные свободные члены
| bool | operator!=(const QSurfaceFormat &a, const QSurfaceFormat &b) |
| bool | operator==(const QSurfaceFormat &a, const QSurfaceFormat &b) |
Подробное описание
Класс QSurfaceFormat представляет собой формат QSurface.
Формат включает размер цветовых буферов, красного, зеленого и синего; размер альфа-буфера; размер буферов глубины и трафарета; и количество образцов на пиксель для многократной выборки. Кроме того, формат содержит параметры конфигурации поверхности, такие как профиль и версия 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 — это typedef для QFlags<FormatOption>. Он хранит комбинацию значений FormatOption с помощью операции OR.
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 |
Отрисовка с помощью Desktop 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 |
Это поведение обмена иногда используется, чтобы уменьшить риск пропуска кадра, когда скорость отрисовки едва держится за частотой обновления экрана. В зависимости от платформы, это также может привести к немного более эффективному использованию GPU благодаря улучшенному поведению конвейера. Трехкратное буферизация стоит дополнительных затрат памяти на кадр и задержки и может не поддерживаться в зависимости от базовой платформы. |
Документация по функциям-членам
QSurfaceFormat::QSurfaceFormat()
Конструирует QSurfaceFormat с инициализацией по умолчанию.
Примечание: По умолчанию запрашивается OpenGL 2.0, поскольку это обеспечивает максимальную переносимость между платформами и реализациями OpenGL.
QSurfaceFormat::QSurfaceFormat(QSurfaceFormat::FormatOptions options)
Конструирует QSurfaceFormat с заданными параметрами формата options.
QSurfaceFormat::QSurfaceFormat(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)
Устанавливает глобальный формат поверхности по умолчанию.
Этот формат используется по умолчанию в 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.
Эта настройка игнорируется, если запрошенная версия 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)
Установите предпочтительное количество сэмплов на пиксель при включённом сглаживании на numSamples. По умолчанию сглаживание отключено.
См. также samples().
void QSurfaceFormat::setStencilBufferSize(int size)
Установите предпочтительный размер буфера трафарета на size бит.
См. также stencilBufferSize().
void QSurfaceFormat::setStereo(bool enable)
Если enable истинно, то включает стереобуферизацию; в противном случае отключает стереобуферизацию.
Стереобуферизация отключена по умолчанию.
Стереобуферизация предоставляет дополнительные цветовые буферы для генерации изображений для левого и правого глаза.
См. также stereo().
void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
Установите поведение обмена буферов поверхности.
Поведение обмена буферов определяет, требуется ли однократная, двойная или тройная буферизация. По умолчанию, 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().
QSurfaceFormat &QSurfaceFormat::operator=(const QSurfaceFormat &other)
Присваивает other этому объекту.
Связанные нечленные функции
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.12/qsurfaceformat.html