Класс 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 |
Открытые типы
| перечисление | ColorSpace { DefaultColorSpace, sRGBColorSpace } |
| перечисление | FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification, ProtectedContent } |
| флаги | 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 |
| 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 сопоставляется.
Документация по типам членов
перечисление 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() контекста. Обратите внимание, что отсутствие установки этого флага не гарантирует, что потеря состояния контекста никогда не произойдёт. Кроме того, некоторые реализации могут выбрать сообщение об ошибке независимо от этого флага. Платформы, которые поддерживают динамическое включение мониторинга потери контекста, например, Windows с WGL или Linux/X11 (xcb) с GLX, будут отслеживать статус в каждом вызове makeCurrent(). Смотрите isValid() для получения дополнительной информации об этом. |
QSurfaceFormat::ProtectedContent |
0x0010 |
Включает доступ к защищенному контенту. Это позволяет графическому процессору работать с защищенными ресурсами (поверхностями, буферами, текстурами), например, с защищенным DRM видеоконтентом. В настоящее время реализовано только для EGL. |
Тип FormatOptions является typedef для 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 |
Рендеринг с помощью настольного 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().
[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)
Устанавливает требуемый тип 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().
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 operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
Возвращает true, если все опции двух объектов QSurfaceFormat lhs и rhs равны; в противном случае возвращает false.
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.2/qsurfaceformat.html