Класс QSurfaceFormat
Класс QSurfaceFormat представляет формат QSurface. Подробнее...
| Заголовок: | #include <QSurfaceFormat> |
| qmake: | QT += gui |
| С версии: | Qt 5.0 |
Открытые типы
| enum | FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification } |
| flags | FormatOptions |
| enum | OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile } |
| enum | RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG } |
| enum | SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer } |
Открытые функции
| QSurfaceFormat() | |
| QSurfaceFormat(FormatOptions options) | |
| QSurfaceFormat(const QSurfaceFormat &other) | |
| ~QSurfaceFormat() | |
| int | alphaBufferSize() const |
| int | blueBufferSize() const |
| int | depthBufferSize() const |
| int | greenBufferSize() const |
| bool | hasAlpha() const |
| int | majorVersion() const |
| int | minorVersion() const |
| QSurfaceFormat::FormatOptions | options() const |
| OpenGLContextProfile | profile() const |
| int | redBufferSize() const |
| RenderableType | renderableType() const |
| int | samples() const |
| void | setAlphaBufferSize(int size) |
| void | setBlueBufferSize(int size) |
| void | setDepthBufferSize(int size) |
| void | setGreenBufferSize(int size) |
| void | setMajorVersion(int major) |
| void | setMinorVersion(int minor) |
| void | setOption(FormatOption option, bool on = true) |
| void | setOptions(QSurfaceFormat::FormatOptions options) |
| void | setProfile(OpenGLContextProfile profile) |
| void | setRedBufferSize(int size) |
| void | setRenderableType(RenderableType type) |
| void | setSamples(int numSamples) |
| void | setStencilBufferSize(int size) |
| void | setStereo(bool enable) |
| void | setSwapBehavior(SwapBehavior behavior) |
| void | setSwapInterval(int interval) |
| void | setVersion(int major, int minor) |
| int | stencilBufferSize() const |
| bool | stereo() const |
| SwapBehavior | swapBehavior() const |
| int | swapInterval() const |
| bool | testOption(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 для рендеринга, включение или отключение стерео буферов и поведение обмена.
Документация по типам членов
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.
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 |
Это поведение обмена буферами иногда используется для уменьшения риска пропуска кадра, когда скорость рендеринга едва соответствует частоте обновления экрана. В зависимости от платформы это также может привести к немного более эффективному использованию графического процессора за счет улучшенного поведения конвейера. Трехкратная буферизация имеет стоимость дополнительного кадра использования памяти и задержки и может быть не поддерживаема в зависимости от базовой платформы. |
Документация функций-членов
QSurfaceFormat::QSurfaceFormat()
Создаёт QSurfaceFormat с инициализированными значениями по умолчанию.
Примечание: По умолчанию запрашивается OpenGL 2.0, так как это обеспечивает наивысший уровень портативности между платформами и реализациями OpenGL.
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().
[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().
OpenGLContextProfile QSurfaceFormat::profile() const
Получает настроенный профиль контекста OpenGL.
Это значение игнорируется, если запрошенная версия OpenGL меньше 3.2.
См. также setProfile().
int QSurfaceFormat::redBufferSize() const
Получить размер красного канала буфера цвета в битах.
См. также setRedBufferSize().
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)
Установить желаемый размер синего канала буфера цвета в битах.
Примечание: В Mac OSX убедитесь, что установлены размеры буферов всех цветовых каналов, иначе это настройка не будет иметь эффекта. Если размер одного из буферов не задан, используется текущая глубина цвета экрана.
См. также blueBufferSize().
[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)
Установить желаемый размер зелёного канала буфера цвета в битах.
Примечание: В Mac OSX убедитесь, что установлены размеры буферов всех цветовых каналов, иначе эта настройка не будет иметь эффекта. Если размер одного из буферов не задан, используется текущая глубина цвета экрана.
См. также greenBufferSize().
void QSurfaceFormat::setMajorVersion(int major)
Установить желаемую major версию OpenGL.
См. также majorVersion().
void QSurfaceFormat::setMinorVersion(int minor)
Установить желаемую minor версию OpenGL.
Версия по умолчанию — 2.0.
См. также minorVersion().
void QSurfaceFormat::setOption(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(OpenGLContextProfile profile)
Устанавливает желаемый профиль контекста OpenGL.
Эта настройка игнорируется, если запрошенная версия OpenGL меньше 3.2.
См. также profile().
void QSurfaceFormat::setRedBufferSize(int size)
Установить желаемый размер красного канала буфера цвета в битах.
Примечание: В Mac OSX убедитесь, что установлены размеры буферов всех цветовых каналов, иначе это настройка не будет иметь эффекта. Если размер одного из буферов не задан, используется текущая глубина цвета экрана.
См. также redBufferSize().
void QSurfaceFormat::setRenderableType(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(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().
SwapBehavior QSurfaceFormat::swapBehavior() const
Возвращает настроенное поведение обмена.
См. также setSwapBehavior().
int QSurfaceFormat::swapInterval() const
Возвращает интервал обмена.
Эта функция была добавлена в Qt 5.3.
См. также setSwapInterval().
bool QSurfaceFormat::testOption(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.6/qsurfaceformat.html