Класс QSurfaceFormat
Класс QSurfaceFormat представляет формат QSurface. Подробнее...
| Заголовок: | #include <QSurfaceFormat> |
| qmake: | QT += gui |
| С момента: | Qt 5.0 |
Этот класс был представлен в 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 |
| 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 сопоставляется.
Документация по типам членов
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 является 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 |
Отрисовка с использованием настольного 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().
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)
Установить желаемый размер синего канала буфера цвета в битах.
См. также 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().
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 &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.15/qsurfaceformat.html