Класс QOpenGLShader
Класс QOpenGLShader позволяет компилировать шейдеры OpenGL. Подробнее...
| Заголовок: | #include <QOpenGLShader> |
| qmake: | QT += gui |
| С момента: | Qt 5.0 |
| Наследует: | QObject |
Этот класс был представлен в Qt 5.0.
Типы публичного доступа
| флаги | ТипШейдера |
| перечисление | ФлагТипШейдера { Вершина, Фрагмент, Геометрия, УправлениеТиснением, ОценкаТиснения, Вычисление } |
Функции публичного доступа
| QOpenGLShader(QOpenGLShader::ТипШейдера type, QObject *parent = nullptr) | |
| виртуальный | ~QOpenGLShader() |
| bool | compileSourceCode(const char *source) |
| bool | compileSourceCode(const QByteArray &source) |
| bool | compileSourceCode(const QString &source) |
| bool | compileSourceFile(const QString &fileName) |
| bool | isCompiled() const |
| QString | log() const |
| GLuint | shaderId() const |
| QOpenGLShader::ТипШейдера | типШейдера() const |
| QByteArray | sourceCode() const |
Статические функции публичного доступа
| bool | hasOpenGLShaders(QOpenGLShader::ТипШейдера type, QOpenGLContext *context = nullptr) |
Подробное описание
Этот класс поддерживает шейдеры, написанные на языке OpenGL Shading Language (GLSL) и на языке OpenGL/ES Shading Language (GLSL/ES).
QOpenGLShader и QOpenGLShaderProgram скрывают от программиста детали компиляции и линковки вершинных и фрагментных шейдеров.
См. также QOpenGLShaderProgram.
Документация по типам членов
перечисление QOpenGLShader::ТипШейдера
Это перечисление определяет тип QOpenGLShader, который создаётся.
| Константа | Значение | Описание |
|---|---|---|
QOpenGLShader::Vertex |
0x0001 |
Вершинный шейдер, написанный на языке OpenGL Shading Language (GLSL). |
QOpenGLShader::Fragment |
0x0002 |
Фрагментный шейдер, написанный на языке OpenGL Shading Language (GLSL). |
QOpenGLShader::Geometry |
0x0004 |
Геометрические шейдеры, написанные на языке OpenGL Shading Language (GLSL) (требуется OpenGL >= 3.2 или OpenGL ES >= 3.2). |
QOpenGLShader::TessellationControl |
0x0008 |
Шейдеры управления тиснением, написанные на языке OpenGL Shading Language (GLSL) (требуется OpenGL >= 4.0 или OpenGL ES >= 3.2). |
QOpenGLShader::TessellationEvaluation |
0x0010 |
Шейдеры оценки тиснений, написанные на языке OpenGL Shading Language (GLSL) (требуется OpenGL >= 4.0 или OpenGL ES >= 3.2). |
QOpenGLShader::Compute |
0x0020 |
Шейдеры вычислений, написанные на языке OpenGL Shading Language (GLSL) (требуется OpenGL >= 4.3 или OpenGL ES >= 3.1). |
Тип ShaderType — псевдоним для QFlags<ФлагТипШейдера>. Он хранит результат объединения по битовому ИЛИ значений ФлагТипШейдера.
Документация по функциям членов
QOpenGLShader::QOpenGLShader(QOpenGLShader::ТипШейдера type, QObject *parent = nullptr)
Создаёт новый объект QOpenGLShader указанного типа type и присоединяет его к parent. Если программы шейдеров не поддерживаются, QOpenGLShaderProgram::hasOpenGLShaderPrograms() вернёт false.
Этот конструктор обычно следует за вызовом compileSourceCode() или compileSourceFile().
Шейдер будет связан с текущим QOpenGLContext.
См. также compileSourceCode() и compileSourceFile().
[virtual] QOpenGLShader::~QOpenGLShader()
Удаляет этот шейдер. Если шейдер был присоединён к объекту QOpenGLShaderProgram, то сам шейдер останется до тех пор, пока не будет уничтожен QOpenGLShaderProgram.
bool QOpenGLShader::compileSourceCode(const char *source)
Устанавливает исходный код для этого шейдера и компилирует его. Возвращает true если исходный код был успешно скомпилирован, в противном случае — false.
См. также compileSourceFile().
bool QOpenGLShader::compileSourceCode(const QByteArray &source)
Это перегруженная функция.
Устанавливает исходный код для этого шейдера и компилирует его. Возвращает true если исходный код был успешно скомпилирован, в противном случае — false.
См. также compileSourceFile().
bool QOpenGLShader::compileSourceCode(const QString &source)
Это перегруженная функция.
Устанавливает исходный код для этого шейдера и компилирует его. Возвращает true если исходный код был успешно скомпилирован, в противном случае — false.
См. также compileSourceFile().
bool QOpenGLShader::compileSourceFile(const QString &fileName)
Устанавливает исходный код для этого шейдера из содержимого fileName и компилирует его. Возвращает true если файл был открыт и исходный код скомпилирован, в противном случае — false.
См. также compileSourceCode().
[static] bool QOpenGLShader::hasOpenGLShaders(QOpenGLShader::ТипШейдера type, QOpenGLContext *context = nullptr)
Возвращает true если программы шейдеров типа type поддерживаются на этой системе; в противном случае — false.
context используется для определения расширений GLSL. Если context nullptr, используется QOpenGLContext::currentContext().
bool QOpenGLShader::isCompiled() const
Возвращает true если этот шейдер был скомпилирован; в противном случае — false.
См. также compileSourceCode() и compileSourceFile().
QString QOpenGLShader::log() const
Возвращает ошибки и предупреждения, возникшие во время последней компиляции.
См. также compileSourceCode() и compileSourceFile().
GLuint QOpenGLShader::shaderId() const
Возвращает идентификатор OpenGL, связанный с этим шейдером.
См. также QOpenGLShaderProgram::programId().
QOpenGLShader::ТипШейдера QOpenGLShader::типШейдера() const
Возвращает тип этого шейдера.
QByteArray QOpenGLShader::sourceCode() const
Возвращает исходный код этого шейдера.
См. также compileSourceCode().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qopenglshader.html