Класс 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 } |
| флаги | 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 |
Статические открытые члены
| 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)
Устанавливает желаемое количество сэмплов на пиксель при включенном сэмплировании.
См. также 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.0/qsurfaceformat.html