Класс QOpenGLShader
Класс QOpenGLShader позволяет компилировать шейдеры OpenGL. Подробнее...
| Заголовок: | #include <QOpenGLShader> |
| CMake: | find_package(Qt6 COMPONENTS OpenGL REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake: | QT += opengl |
| С момента: | Qt 5.0 |
| Наследует: | QObject |
Типы публичного доступа
| Флаги | ТипШейдера |
| Перечисление | ТипШейдераБит { Вершинный, Фрагментный, Геометрический, УправлениеТисселяцией, ОценкаТисселяцией, Вычисление } |
Функции публичного доступа
| 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::ТипШейдера | shaderType() 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 (GLSL) (требует OpenGL >= 4.0 или OpenGL ES >= 3.2). |
QOpenGLShader::TessellationEvaluation |
0x0010 |
Шейдеры оценки тисселяцией, написанные на языке OpenGL (GLSL) (требует OpenGL >= 4.0 или OpenGL ES >= 3.2). |
QOpenGLShader::Compute |
0x0020 |
Шейдеры вычислений, написанные на языке OpenGL (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().
END_OF_DOCUMENT_MARKERQOpenGLShader::ShaderType QOpenGLShader::shaderType() 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-6.0/qopenglshader.html