Класс 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) |
Связанные нечлены
| 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 является типом-псевдонимом для 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()
Создает 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
Возвращает количество выборок на пиксель при включенном многократном сэмплировании. По умолчанию многократное сэмплирование выключено.
См. также 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 равно 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().
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/archives/qt-5.11/qsurfaceformat.html