Spec-Zone.ru › Qt 5.11

Класс QOpenGLFramebufferObject

Класс QOpenGLFramebufferObject инкапсулирует объект буфера кадра OpenGL. Подробнее...

Заголовок: #include <QOpenGLFramebufferObject>
qmake: QT += gui
С момента: Qt 5.0
  • Список всех членов, включая унаследованные

Типы public

перечисление Attachment { NoAttachment, CombinedDepthStencil, Depth }
перечисление FramebufferRestorePolicy { DontRestoreFramebufferBinding, RestoreFramebufferBindingToDefault, RestoreFrameBufferBinding }

Функции public

QOpenGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D)
QOpenGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D)
QOpenGLFramebufferObject(const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0)
QOpenGLFramebufferObject(int width, int height, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0)
QOpenGLFramebufferObject(const QSize &size, const QOpenGLFramebufferObjectFormat &format)
QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat &format)
virtual ~QOpenGLFramebufferObject()
void addColorAttachment(const QSize &size, GLenum internalFormat = 0)
void addColorAttachment(int width, int height, GLenum internalFormat = 0)
QOpenGLFramebufferObject::Attachment attachment() const
bool bind()
QOpenGLFramebufferObjectFormat format() const
GLuint handle() const
int height() const
bool isBound() const
bool isValid() const
bool release()
void setAttachment(QOpenGLFramebufferObject::Attachment attachment)
QSize size() const
QVector<QSize> sizes() const
GLuint takeTexture()
GLuint takeTexture(int colorAttachmentIndex)
GLuint texture() const
QVector<GLuint> textures() const
QImage toImage(bool flipped) const
QImage toImage() const
QImage toImage(bool flipped, int colorAttachmentIndex) const
int width() const

Статические члены public

bool bindDefault()
void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex, QOpenGLFramebufferObject::FramebufferRestorePolicy restorePolicy)
void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex)
void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST)
void blitFramebuffer(QOpenGLFramebufferObject *target, QOpenGLFramebufferObject *source, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST)
bool hasOpenGLFramebufferBlit()
bool hasOpenGLFramebufferObjects()

Подробное описание

Класс QOpenGLFramebufferObject инкапсулирует объект буфера кадра OpenGL.

Класс QOpenGLFramebufferObject инкапсулирует объект буфера кадра OpenGL, определяемый расширением GL_EXT_framebuffer_object. Он предоставляет поверхность для отрисовки с помощью QPainter с помощью QOpenGLPaintDevice, или отрисовки с помощью собственных вызовов OpenGL. Эта поверхность может быть привязана и использована как обычная текстура в собственном коде отрисовки OpenGL. По умолчанию класс QOpenGLFramebufferObject генерирует 2D текстуру OpenGL (используя целевой параметр GL_TEXTURE_2D), которая используется как внутренняя целевая поверхность отрисовки.

Важно иметь текущий контекст OpenGL при создании QOpenGLFramebufferObject, в противном случае инициализация завершится ошибкой.

Создайте экземпляр QOpenGLFrameBufferObject с прикреплённым CombinedDepthStencil прикреплением, если вы хотите, чтобы QPainter отображался правильно. Обратите внимание, что вам необходимо создать QOpenGLFramebufferObject с более чем одной выборкой на пиксель для сглаживания примитивов при рисовании с помощью QPainter. Для создания буфера многократной выборки вы должны использовать один из конструкторов, принимающий параметр QOpenGLFramebufferObjectFormat, и установить свойство QOpenGLFramebufferObjectFormat::samples() в ненулевое значение.

Для объектов буфера многократной выборки создаётся буфер цвета, в противном случае создаётся текстура с указанным целевым значением текстуры. Буфер цвета или текстура будут иметь указанный внутренний формат и будут прикреплены к прикреплению GL_COLOR_ATTACHMENT0 в объекте буфера.

Также поддерживаются несколько целевых буферов рендеринга, если реализация OpenGL это поддерживает. Здесь будут присутствовать несколько текстур (или, в случае многократной выборки, буферов рендеринга), и каждая из них будет прикреплена к GL_COLOR_ATTACHMENT0, 1, 2, ...

Если вы хотите использовать объект буфера с включённой многократной выборкой в качестве текстуры, вам сначала необходимо скопировать данные из него в обычный объект буфера с помощью QOpenGLContext::blitFramebuffer().

Возможна отрисовка в QOpenGLFramebufferObject с использованием QPainter и QOpenGLPaintDevice в отдельном потоке.

Документация по типам членов

enum QOpenGLFramebufferObject::Attachment

Этот тип перечисления используется для настройки буферов глубины и трафарета, прикреплённых к объекту буфера при его создании.

Постоянная Значение Описание
QOpenGLFramebufferObject::NoAttachment 0 К объекту буфера не добавляется никаких прикреплений. Обратите внимание, что тесты глубины и трафарета OpenGL не будут работать при рендеринге в объект буфера без буферов глубины или трафарета. Это значение по умолчанию.
QOpenGLFramebufferObject::CombinedDepthStencil 1 Если присутствует расширение GL_EXT_packed_depth_stencil, прикрепляется объединённый буфер глубины и трафарета. Если расширение отсутствует, прикрепляется только буфер глубины.
QOpenGLFramebufferObject::Depth 2 К объекту буфера прикрепляется буфер глубины.

См. также attachment().

enum QOpenGLFramebufferObject::FramebufferRestorePolicy

Этот тип перечисления используется для настройки поведения, связанного с восстановлением привязок буферов, когда вызывается blitFramebuffer().

Постоянная Значение Описание
QOpenGLFramebufferObject::DontRestoreFramebufferBinding 0 Не восстанавливать предыдущую привязку буфера. Вызывающий метод отвечает за отслеживание и установку привязки буфера по мере необходимости.
QOpenGLFramebufferObject::RestoreFramebufferBindingToDefault 1 После операции blit привязать буфер по умолчанию.
QOpenGLFramebufferObject::RestoreFrameBufferBinding 2 Восстановить ранее привязанный буфер. Это потенциально дорогостояще из-за необходимости запроса текущего привязанного буфера.

Это перечисление было введено или изменено в Qt 5.7.

См. также blitFramebuffer().

Документация по функциям-членам

QOpenGLFramebufferObject::QOpenGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D)

Конструирует объект буфера OpenGL и привязывает 2D текстуру OpenGL к буферу размера size. Текстура прикреплена к целевому значению GL_COLOR_ATTACHMENT0 в объекте буфера.

Параметр target используется для указания целевого значения текстуры OpenGL. Целевое значение по умолчанию GL_TEXTURE_2D. Имейте в виду, что текстуры GL_TEXTURE_2D должны иметь ширину и высоту, являющиеся степенью двойки (например, 256x512), если вы не используете OpenGL 2.0 или более позднюю версию.

По умолчанию буферы глубины и трафарета не прикреплены. Это поведение можно изменить, используя один из перегруженных конструкторов.

Внутренний формат текстуры по умолчанию GL_RGBA8 для настольного OpenGL и GL_RGBA для OpenGL/ES.

Важно, чтобы у вас был текущий контекст OpenGL при создании QOpenGLFramebufferObject, иначе инициализация завершится неудачей.

См. также size(), texture() и attachment().

QOpenGLFramebufferObject::QOpenGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D)

Конструирует объект буфера OpenGL и привязывает 2D текстуру OpenGL к буферу заданной ширины и высоты.

См. также size() и texture().

QOpenGLFramebufferObject::QOpenGLFramebufferObject(const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0)

Конструирует объект буфера OpenGL и привязывает текстуру к буферу заданного размера.

Параметр attachment описывает конфигурацию буферов глубины/трафарета, target — целевое значение текстуры, а internalFormat — внутренний формат текстуры. Целевое значение текстуры по умолчанию GL_TEXTURE_2D, а внутренний формат по умолчанию GL_RGBA8 для настольного OpenGL и GL_RGBA для OpenGL/ES.

См. также size(), texture() и attachment().

QOpenGLFramebufferObject::QOpenGLFramebufferObject(int width, int height, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0)

Конструирует объект буфера OpenGL и привязывает текстуру к буферу заданной ширины и высоты.

Параметр attachment описывает конфигурацию буферов глубины/трафарета, target — целевое значение текстуры, а internalFormat — внутренний формат текстуры. Целевое значение текстуры по умолчанию GL_TEXTURE_2D, а внутренний формат по умолчанию GL_RGBA8 для настольного OpenGL и GL_RGBA для OpenGL/ES.

См. также size(), texture() и attachment().

QOpenGLFramebufferObject::QOpenGLFramebufferObject(const QSize &size, const QOpenGLFramebufferObjectFormat &format)

Конструирует объект буфера OpenGL заданного размера на основе переданного формата format.

QOpenGLFramebufferObject::QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat &format)

Конструирует объект буфера OpenGL заданной ширины и высоты на основе переданного формата format.

[virtual] QOpenGLFramebufferObject::~QOpenGLFramebufferObject()

Удаляет объект буфера и освобождает все выделенные ресурсы.

void QOpenGLFramebufferObject::addColorAttachment(const QSize &size, GLenum internalFormat = 0)

Создаёт и прикрепляет дополнительную текстуру или буфер рендеринга ширины и высоты size.

Всегда существует прикрепление в GL_COLOR_ATTACHMENT0. Используйте эту функцию для настройки дополнительных прикреплений в GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2 и т. д.

Если internalFormat не равно 0, оно задаёт внутренний формат текстуры или буфера рендеринга. В противном случае используется значение по умолчанию GL_RGBA или GL_RGBA8.

Примечание: Эта функция работает только при поддержке нескольких целевых буферов рендеринга реализацией OpenGL. В противном случае функция не добавит дополнительных прикреплений цвета. Вызовите QOpenGLFunctions::hasOpenGLFeature() с QOpenGLFunctions::MultipleRenderTargets во время выполнения, чтобы проверить, поддерживается ли MRT.

Примечание: Внутренний формат цветовых прикреплений может отличаться, но могут существовать ограничения на поддерживаемые комбинации в зависимости от драйверов.

Примечание: Размер цветовых прикреплений может отличаться, но рендеринг ограничен областью, которая подходит для всех прикреплений в соответствии со спецификацией OpenGL. Однако некоторые драйверы могут не полностью соответствовать этому аспекту.

Эта функция была введена в Qt 5.6.

void QOpenGLFramebufferObject::addColorAttachment(int width, int height, GLenum internalFormat = 0)

Это перегруженный метод.

Создаёт и прикрепляет дополнительную текстуру или буфер рендеринга размерами width и height.

Если internalFormat не 0, он задаёт внутренний формат текстуры или буфера рендеринга. В противном случае используется значение по умолчанию GL_RGBA или GL_RGBA8.

Этот метод был представлен в Qt 5.6.

QOpenGLFramebufferObject::Attachment QOpenGLFramebufferObject::attachment() const

Возвращает состояние буферов глубины и трафарета, прикреплённых к этому объекту фреймбуфера.

См. также setAttachment().

bool QOpenGLFramebufferObject::bind()

Переключает рендеринг с используемого по умолчанию фреймбуфера системы окон на этот объект фреймбуфера. Возвращает true при успехе, false в противном случае.

Примечание: Если был вызван takeTexture(), создаётся новая текстура и связывается с объектом фреймбуфера. Это может быть затратно и изменяет состояние контекста (текущая привязанная текстура).

См. также release().

[static] bool QOpenGLFramebufferObject::bindDefault()

Переключает рендеринг обратно на фреймбуфер системы окон по умолчанию. Возвращает true при успехе, false в противном случае.

См. также bind() и release().

[static] void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex, QOpenGLFramebufferObject::FramebufferRestorePolicy restorePolicy)

Копирует содержимое прямоугольника sourceRect из объекта фреймбуфера source в прямоугольник targetRect объекта фреймбуфера target.

Если source или target равны 0, используется фреймбуфер по умолчанию как источник или цель соответственно.

Этот метод не будет иметь эффекта, если hasOpenGLFramebufferBlit() возвращает false.

Параметр buffers должен быть маской, состоящей из комбинации GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, и GL_STENCIL_BUFFER_BIT. Любой тип буфера, который отсутствует как в исходном, так и в целевом буферах, игнорируется.

Прямоугольники sourceRect и targetRect могут иметь разные размеры; в этом случае buffers не должно содержать GL_DEPTH_BUFFER_BIT или GL_STENCIL_BUFFER_BIT. Параметр filter должен быть установлен на GL_LINEAR или GL_NEAREST, и определяет, должна ли использоваться линейная или ближайшая интерполяция при масштабировании.

Если source равно target, копирование выполняется внутри одного и того же буфера. Результат неопределён, если исходные и целевые прямоугольники перекрываются и имеют разные размеры. Размеры также должны совпадать, если любой из объектов фреймбуфера является фреймбуфером с многократной выборкой.

Примечание: Если включен тест обрезки, он будет ограничивать область копирования.

При использовании нескольких буферов рендеринга, readColorAttachmentIndex и drawColorAttachmentIndex указывают индекс цветовых прикреплённых буферов в исходном и целевом фреймбуферах.

restorePolicy определяет, следует ли восстанавливать фреймбуфер, который был привязан до вызова этого метода, или следует ли привязывать фреймбуфер по умолчанию перед возвратом, или же ответственность за отслеживание и установку привязанного фреймбуфера лежит на вызывающей стороне. Восстановление предыдущего фреймбуфера может быть относительно затратным из-за вызова glGetIntegerv, который на некоторых драйверах OpenGL может подразумевать остановку конвейера.

Этот метод был представлен в Qt 5.7.

См. также hasOpenGLFramebufferBlit().

[static] void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex)

Это перегруженный метод.

Удобная перегрузка для копирования между двумя объектами фреймбуфера и восстановления предыдущей привязки фреймбуфера. Эквивалентно вызову blitFramebuffer(target, targetRect, source, sourceRect, buffers, filter, readColorAttachmentIndex, drawColorAttachmentIndex, RestoreFrameBufferBinding).

[static] void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST)

Это перегруженный метод.

* Удобная перегрузка для копирования между двумя объектами фреймбуфера.

[static] void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target, QOpenGLFramebufferObject *source, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST)

Это перегруженный метод.

Удобная перегрузка для копирования между двумя объектами фреймбуфера.

QOpenGLFramebufferObjectFormat QOpenGLFramebufferObject::format() const

Возвращает формат этого объекта фреймбуфера.

GLuint QOpenGLFramebufferObject::handle() const

Возвращает дескриптор объекта фреймбуфера OpenGL для этого объекта фреймбуфера (возвращённый функцией glGenFrameBuffersEXT()). Этот дескриптор может использоваться для прикрепления новых изображений или буферов к фреймбуферу. Пользователь отвечает за очистку и уничтожение этих объектов.

[static] bool QOpenGLFramebufferObject::hasOpenGLFramebufferBlit()

Возвращает true если расширение OpenGL GL_EXT_framebuffer_blit присутствует в этой системе; в противном случае возвращает false.

См. также blitFramebuffer().

[static] bool QOpenGLFramebufferObject::hasOpenGLFramebufferObjects()

Возвращает true если расширение OpenGL GL_EXT_framebuffer_object присутствует в этой системе; в противном случае возвращает false.

int QOpenGLFramebufferObject::height() const

Возвращает высоту прикреплений фреймбуфера.

bool QOpenGLFramebufferObject::isBound() const

Возвращает true если объект фреймбуфера в настоящее время привязан к текущему контексту, в противном случае возвращается false.

bool QOpenGLFramebufferObject::isValid() const

Возвращает true если объект фреймбуфера валиден.

Фреймбуфер может стать невалидным, если процесс инициализации завершится ошибкой, пользователь прикрепит невалидный буфер к объекту фреймбуфера или укажет размер текстуры с шириной/высотой, не являющейся степенью двойки, если целевой параметр текстуры равен GL_TEXTURE_2D. Ограничение на нестепени двойки не применяется, если версия OpenGL 2.0 или выше, или если расширение GL_ARB_texture_non_power_of_two присутствует.

Фреймбуфер также может стать невалидным, если QOpenGLContext, в рамках которого был создан фреймбуфер, уничтожен, и нет других общих контекстов, которые могут взять на себя владение фреймбуфером.

bool QOpenGLFramebufferObject::release()

Переключает рендеринг обратно на фреймбуфер системы окон по умолчанию. Возвращает true при успехе, false в противном случае.

См. также bind().

void QOpenGLFramebufferObject::setAttachment(QOpenGLFramebufferObject::Attachment attachment)

Устанавливает прикрепления объекта фреймбуфера на attachment.

Это можно использовать для освобождения или повторного прикрепления прикреплённых буферов глубины и трафарета по мере необходимости.

Примечание: Этот метод изменяет текущую привязку фреймбуфера.

См. также attachment().

QSize QOpenGLFramebufferObject::size() const

Возвращает размер цветовых и глубинно-маскировочных прикреплений, присоединённых к этому объекту фреймбуфера.

QVector<QSize> QOpenGLFramebufferObject::sizes() const

Возвращает размеры всех цветовых прикреплений, присоединённых к этому объекту фреймбуфера.

Данная функция была добавлена в Qt 5.6.

GLuint QOpenGLFramebufferObject::takeTexture()

Возвращает идентификатор текстуры для текстуры, прикреплённой к этому объекту фреймбуфера. Владение текстурой передаётся вызывающей стороне.

Если объект фреймбуфера в настоящее время привязан, будет неявным образом выполнено release(). Во время следующего вызова bind() будет создана новая текстура.

Если используется объект фреймбуфера с несколькими образцами, текстуры нет, и возвращаемое значение этой функции будет недействительным. Аналогично, неполные объекты фреймбуфера также вернут 0.

Данная функция была добавлена в Qt 5.3.

См. также texture(), bind() и release().

GLuint QOpenGLFramebufferObject::takeTexture(int colorAttachmentIndex)

Это перегруженная функция.

Возвращает идентификатор текстуры для текстуры, прикреплённой к цветовому прикреплению с индексом colorAttachmentIndex этого объекта фреймбуфера. Владение текстурой передаётся вызывающей стороне.

Когда colorAttachmentIndex равно 0, поведение идентично варианту функции без параметров.

Если объект фреймбуфера в настоящее время привязан, будет неявным образом выполнено release(). Во время следующего вызова bind() будет создана новая текстура.

Если используется объект фреймбуфера с несколькими образцами, текстуры нет, и возвращаемое значение этой функции будет недействительным. Аналогично, неполные объекты фреймбуфера также вернут 0.

Данная функция была добавлена в Qt 5.6.

GLuint QOpenGLFramebufferObject::texture() const

Возвращает идентификатор текстуры для текстуры, прикреплённой в качестве стандартной цели отрисовки в этом объекте фреймбуфера. Этот идентификатор текстуры можно привязать как обычную текстуру в собственном коде OpenGL.

Если используется объект фреймбуфера с несколькими образцами, возвращаемое значение этой функции будет недействительным.

Когда прикреплено несколько текстур, возвращаемое значение — ID первой из них.

См. также takeTexture() и textures().

QVector<GLuint> QOpenGLFramebufferObject::textures() const

Возвращает идентификаторы всех прикреплённых текстур.

Если используется объект фреймбуфера с несколькими образцами, возвращается пустой вектор.

Данная функция была добавлена в Qt 5.6.

См. также takeTexture() и texture().

QImage QOpenGLFramebufferObject::toImage(bool flipped) const

Возвращает содержимое этого объекта фреймбуфера в виде QImage.

Если flipped равно true, изображение переворачивается с координат OpenGL на координаты растра. Если используется совместно с QOpenGLPaintDevice, flipped должно быть противоположно значению QOpenGLPaintDevice::paintFlipped().

Возвращаемое изображение имеет формат premultiplied ARGB32 или RGB32. Последний используется только при internalTextureFormat() установлен в GL_RGB. Начиная с Qt 5.2, функция переходит к premultiplied RGBA8888 или RGBx8888 при чтении в (A)RGB32 не поддерживается, и это включает OpenGL ES. Начиная с Qt 5.4, возвращается изображение формата A2BGR30, если внутренний формат — RGB10_A2.

Если рендеринг в буфере фрейма не выполнялся с учётом преумноженного альфа-канала, создайте обёртку QImage с форматом без преумножения. Это необходимо перед выполнением операций, таких как QImage::save(), так как в противном случае данные изображения будут депреумножены, даже если они первоначально не были преумножены. Для создания такой обёртки без копирования пиксельных данных выполните следующее:

QImage fboImage(fbo.toImage());
QImage image(fboImage.constBits(), fboImage.width(), fboImage.height(), QImage::Format_ARGB32);

Для объектов фреймбуфера с несколькими образцами образцы решаются с использованием расширения GL_EXT_framebuffer_blit. Если расширение недоступно, содержимое возвращаемого изображения не определено.

Для однообразцовых фреймбуферов содержимое извлекается через glReadPixels. Это потенциально дорогостоящая и неэффективная операция. Поэтому рекомендуется использовать эту функцию как можно реже.

См. также QOpenGLPaintDevice::paintFlipped().

QImage QOpenGLFramebufferObject::toImage() const

Это перегруженная функция.

Возвращает содержимое этого объекта фреймбуфера в виде QImage. Этот метод переворачивает изображение с координат OpenGL на координаты растра.

QImage QOpenGLFramebufferObject::toImage(bool flipped, int colorAttachmentIndex) const

Это перегруженная функция.

Возвращает содержимое цветового прикрепления с индексом colorAttachmentIndex этого объекта фреймбуфера в виде QImage. Этот метод переворачивает изображение с координат OpenGL на координаты растра, когда flipped установлено в true.

Примечание: Эта перегрузка полностью функциональна только при поддержке нескольких целей рендеринга реализацией OpenGL. В противном случае будет настроен только один цветовой приёмник.

Данная функция была добавлена в Qt 5.6.

int QOpenGLFramebufferObject::width() const

Возвращает ширину прикреплений объекта фреймбуфера.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qopenglframebufferobject.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API