Spec-Zone.ru › Qt 5.12

Класс QOpenGLShaderProgram

Класс QOpenGLShaderProgram позволяет связывать и использовать программы OpenGL шейдеров. Подробнее...

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

Открытые функции

QOpenGLShaderProgram(QObject *parent = nullptr)
virtual ~QOpenGLShaderProgram()
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source)
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)
bool addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName)
bool addShader(QOpenGLShader *shader)
bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source)
bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)
bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)
bool addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName)
int attributeLocation(const char *name) const
int attributeLocation(const QByteArray &name) const
int attributeLocation(const QString &name) const
bool bind()
void bindAttributeLocation(const char *name, int location)
void bindAttributeLocation(const QByteArray &name, int location)
void bindAttributeLocation(const QString &name, int location)
bool create()
QVector<float> defaultInnerTessellationLevels() const
QVector<float> defaultOuterTessellationLevels() const
void disableAttributeArray(int location)
void disableAttributeArray(const char *name)
void enableAttributeArray(int location)
void enableAttributeArray(const char *name)
bool isLinked() const
virtual bool link()
QString log() const
int maxGeometryOutputVertices() const
int patchVertexCount() const
GLuint programId() const
void release()
void removeAllShaders()
void removeShader(QOpenGLShader *shader)
void setAttributeArray(int location, const GLfloat *values, int tupleSize, int stride = 0)
void setAttributeArray(int location, const QVector2D *values, int stride = 0)
void setAttributeArray(int location, const QVector3D *values, int stride = 0)
void setAttributeArray(int location, const QVector4D *values, int stride = 0)
void setAttributeArray(int location, GLenum type, const void *values, int tupleSize, int stride = 0)
void setAttributeArray(const char *name, const GLfloat *values, int tupleSize, int stride = 0)
void setAttributeArray(const char *name, const QVector2D *values, int stride = 0)
void setAttributeArray(const char *name, const QVector3D *values, int stride = 0)
void setAttributeArray(const char *name, const QVector4D *values, int stride = 0)
void setAttributeArray(const char *name, GLenum type, const void *values, int tupleSize, int stride = 0)
void setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0)
void setAttributeBuffer(const char *name, GLenum type, int offset, int tupleSize, int stride = 0)
void setAttributeValue(int location, GLfloat value)
void setAttributeValue(int location, GLfloat x, GLfloat y)
void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z)
END_OF_DOCUMENT_MARKER
void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void setAttributeValue(int location, const QVector2D &value)
void setAttributeValue(int location, const QVector3D &value)
void setAttributeValue(int location, const QVector4D &value)
void setAttributeValue(int location, const QColor &value)
void setAttributeValue(int location, const GLfloat *values, int columns, int rows)
void setAttributeValue(const char *name, GLfloat value)
void setAttributeValue(const char *name, GLfloat x, GLfloat y)
void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z)
void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void setAttributeValue(const char *name, const QVector2D &value)
void setAttributeValue(const char *name, const QVector3D &value)
void setAttributeValue(const char *name, const QVector4D &value)
void setAttributeValue(const char *name, const QColor &value)
void setAttributeValue(const char *name, const GLfloat *values, int columns, int rows)
void setDefaultInnerTessellationLevels(const QVector<float> &levels)
void setDefaultOuterTessellationLevels(const QVector<float> &levels)
void setPatchVertexCount(int count)
void setUniformValue(int location, GLfloat value)
void setUniformValue(int location, GLint value)
void setUniformValue(const char *name, const QColor &color)
void setUniformValue(const char *name, const QPoint &point)
void setUniformValue(const char *name, const QPointF &point)
void setUniformValue(const char *name, const QSize &size)
void setUniformValue(const char *name, const QSizeF &size)
void setUniformValue(const char *name, const QMatrix2x2 &value)
void setUniformValue(const char *name, const QMatrix2x3 &value)
void setUniformValue(const char *name, const QMatrix2x4 &value)
void setUniformValue(const char *name, const QMatrix3x2 &value)
void setUniformValue(const char *name, const QMatrix3x3 &value)
void setUniformValue(const char *name, const QMatrix3x4 &value)
void setUniformValue(const char *name, const QMatrix4x2 &value)
void setUniformValue(const char *name, const QMatrix4x3 &value)
void setUniformValue(const char *name, const QMatrix4x4 &value)
void setUniformValue(const char *name, const GLfloat [2][2] value = 2)
void setUniformValue(const char *name, const GLfloat [3][3] value = 3)
void setUniformValue(const char *name, const GLfloat [4][4] value = 4)
void setUniformValue(const char *name, const QTransform &value)
void setUniformValue(int location, GLuint value)
void setUniformValue(int location, GLfloat x, GLfloat y)
void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z)
void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void setUniformValue(int location, const QVector2D &value)
void setUniformValue(int location, const QVector3D &value)
void setUniformValue(int location, const QVector4D &value)
void setUniformValue(int location, const QColor &color)
void setUniformValue(int location, const QPoint &point)
void setUniformValue(int location, const QPointF &point)
void setUniformValue(int location, const QSize &size)
void setUniformValue(int location, const QSizeF &size)
void setUniformValue(int location, const QMatrix2x2 &value)
void setUniformValue(int location, const QMatrix2x3 &value)
void setUniformValue(int location, const QMatrix2x4 &value)
void setUniformValue(int location, const QMatrix3x2 &value)
void setUniformValue(int location, const QMatrix3x3 &value)
void setUniformValue(int location, const QMatrix3x4 &value)
void setUniformValue(int location, const QMatrix4x2 &value)
void setUniformValue(int location, const QMatrix4x3 &value)
void setUniformValue(int location, const QMatrix4x4 &value)
void setUniformValue(int location, const GLfloat [2][2] value = 2)
void setUniformValue(int location, const GLfloat [3][3] value = 3)
void setUniformValue(int location, const GLfloat [4][4] value = 4)
void setUniformValue(int location, const QTransform &value)
void setUniformValue(const char *name, GLfloat value)
void setUniformValue(const char *name, GLint value)
void setUniformValue(const char *name, GLuint value)
void setUniformValue(const char *name, GLfloat x, GLfloat y)
void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z)
void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void setUniformValue(const char *name, const QVector2D &value)
void setUniformValue(const char *name, const QVector3D &value)
void setUniformValue(const char *name, const QVector4D &value)
void setUniformValueArray(int location, const GLfloat *values, int count, int tupleSize)
void setUniformValueArray(int location, const GLint *values, int count)
void setUniformValueArray(int location, const GLuint *values, int count)
void setUniformValueArray(int location, const QVector2D *values, int count)
void setUniformValueArray(int location, const QVector3D *values, int count)
void setUniformValueArray(int location, const QVector4D *values, int count)
void setUniformValueArray(int location, const QMatrix2x2 *values, int count)
void setUniformValueArray(int location, const QMatrix2x3 *values, int count)
void setUniformValueArray(int location, const QMatrix2x4 *values, int count)
void setUniformValueArray(int location, const QMatrix3x2 *values, int count)
void setUniformValueArray(int location, const QMatrix3x3 *values, int count)
void setUniformValueArray(int location, const QMatrix3x4 *values, int count)
void setUniformValueArray(int location, const QMatrix4x2 *values, int count)
void setUniformValueArray(int location, const QMatrix4x3 *values, int count)
void setUniformValueArray(int location, const QMatrix4x4 *values, int count)
void setUniformValueArray(const char *name, const GLfloat *values, int count, int tupleSize)
void setUniformValueArray(const char *name, const GLint *values, int count)
void setUniformValueArray(const char *name, const GLuint *values, int count)
void setUniformValueArray(const char *name, const QVector2D *values, int count)
void setUniformValueArray(const char *name, const QVector3D *values, int count)
void setUniformValueArray(const char *name, const QVector4D *values, int count)
void setUniformValueArray(const char *name, const QMatrix2x2 *values, int count)
void setUniformValueArray(const char *name, const QMatrix2x3 *values, int count)
void setUniformValueArray(const char *name, const QMatrix2x4 *values, int count)
void setUniformValueArray(const char *name, const QMatrix3x2 *values, int count)
void setUniformValueArray(const char *name, const QMatrix3x3 *values, int count)
void setUniformValueArray(const char *name, const QMatrix3x4 *values, int count)
void setUniformValueArray(const char *name, const QMatrix4x2 *values, int count)
void setUniformValueArray(const char *name, const QMatrix4x3 *values, int count)
void setUniformValueArray(const char *name, const QMatrix4x4 *values, int count)
QList<QOpenGLShader *> shaders() const
int uniformLocation(const char *name) const
int uniformLocation(const QByteArray &name) const
int uniformLocation(const QString &name) const
  • 31 public functions inherited from QObject

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

bool hasOpenGLShaderPrograms(QOpenGLContext *context = nullptr)
const QMetaObject staticMetaObject
  • 9 static public members inherited from QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 public slot, унаследованный от QObject
  • 2 сигнала, унаследованные от QObject
  • 9 protected functions inherited from QObject

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

Класс QOpenGLShaderProgram позволяет связывать и использовать программы OpenGL шейдеров.

Введение

Этот класс поддерживает программы шейдеров, написанные на языке OpenGL Shading Language (GLSL) и языке OpenGL/ES Shading Language (GLSL/ES).

QOpenGLShader и QOpenGLShaderProgram скрывают от программиста детали компиляции и компоновки вершинных и фрагментных шейдеров.

Следующий пример создает программу вершинного шейдера, используя предоставленный исходный код code. После компиляции и компоновки программа шейдера активируется в текущем QOpenGLContext вызовом QOpenGLShaderProgram::bind():

QOpenGLShader shader(QOpenGLShader::Vertex);
shader.compileSourceCode(code);

QOpenGLShaderProgram program(context);
program.addShader(&shader);
program.link();

program.bind();

Написание переносимых шейдеров

Программы шейдеров могут быть сложными для повторного использования в разных реализациях OpenGL из-за различных уровней поддержки стандартных атрибутов вершин и переменных-униформ. В частности, GLSL/ES не имеет всех стандартных переменных, которые присутствуют в системах OpenGL на настольных системах: gl_Vertex, gl_Normal, gl_Color, и так далее. Настольный OpenGL не имеет квалификаторов переменных highp, mediump, и lowp.

Класс QOpenGLShaderProgram упрощает процесс написания переносимых шейдеров, добавляя в префикс всех программ шейдеров следующие строки для настольного OpenGL:

#define highp
#define mediump
#define lowp

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

Простой пример шейдера

program.addShaderFromSourceCode(QOpenGLShader::Vertex,
    "attribute highp vec4 vertex;\n"
    "uniform highp mat4 matrix;\n"
    "void main(void)\n"
    "{\n"
    "   gl_Position = matrix * vertex;\n"
    "}");
program.addShaderFromSourceCode(QOpenGLShader::Fragment,
    "uniform mediump vec4 color;\n"
    "void main(void)\n"
    "{\n"
    "   gl_FragColor = color;\n"
    "}");
program.link();
program.bind();

int vertexLocation = program.attributeLocation("vertex");
int matrixLocation = program.uniformLocation("matrix");
int colorLocation = program.uniformLocation("color");

При активной программе шейдера выше, мы можем нарисовать зелёный треугольник следующим образом:

static GLfloat const triangleVertices[] = {
    60.0f,  10.0f,  0.0f,
    110.0f, 110.0f, 0.0f,
    10.0f,  110.0f, 0.0f
};

QColor color(0, 255, 0, 255);

QMatrix4x4 pmvMatrix;
pmvMatrix.ortho(rect());

program.enableAttributeArray(vertexLocation);
program.setAttributeArray(vertexLocation, triangleVertices, 3);
program.setUniformValue(matrixLocation, pmvMatrix);
program.setUniformValue(colorLocation, color);

glDrawArrays(GL_TRIANGLES, 0, 3);

program.disableAttributeArray(vertexLocation);

Бинарные шейдеры и программы

Бинарные шейдеры могут быть указаны с помощью glShaderBinary() на возвращаемом значении из QOpenGLShader::shaderId(). Экземпляр QOpenGLShader, содержащий бинарный файл, затем может быть добавлен в программу шейдера с помощью addShader() и скомпонован обычным способом с помощью link().

Бинарные программы могут быть указаны с помощью glProgramBinaryOES() на возвращаемом значении из programId(). Затем приложение должно вызвать link(), которое заметит, что программа уже была указана и скомпонована, что позволит выполнять другие операции с программой шейдера. Идентификатор программы шейдера можно явно создать с помощью функции create().

Кэширование бинарных файлов программ

Начиная с Qt 5.9, поддержка кэширования бинарных файлов программ на диске встроена. Для её активации используйте addCacheableShaderFromSourceCode() и addCacheableShaderFromSourceFile(). При использовании контекста OpenGL ES 3.x или поддержки GL_ARB_get_program_binary, это будет автоматически кэшировать бинарные файлы программ под QStandardPaths::GenericCacheLocation или QStandardPaths::CacheLocation. Когда поддержка недоступна, вызов вариантов с кэшированием эквивалентен обычным вариантам.

Примечание: Некоторые драйверы не имеют доступных бинарных форматов, даже если они рекламируют расширение или предлагают OpenGL ES 3.0. В этом случае поддержка бинарных файлов программ будет отключена.

См. также QOpenGLShader.

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

QOpenGLShaderProgram::QOpenGLShaderProgram(QObject *parent = nullptr)

Конструирует новую программу шейдера и прикрепляет её к parent. Программа будет недействительной до тех пор, пока не будет вызван addShader().

Программа шейдера будет ассоциирована с текущим QOpenGLContext.

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

[virtual] QOpenGLShaderProgram::~QOpenGLShaderProgram()

Удаляет эту программу шейдера.

bool QOpenGLShaderProgram::addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source)

Регистрирует шейдер указанного типа type и исходного кода source в этой программе. В отличие от addShaderFromSourceCode(), эта функция не выполняет компиляцию. Компиляция откладывается до link(), и может вообще не происходить, потому что link() может потенциально использовать бинарный файл программы из кэша Qt на диске для шейдеров. Это обычно приводит к значительному увеличению производительности.

Возвращает true, если шейдер был зарегистрирован или, в случае отсутствия кэширования, успешно скомпилирован; false, если произошла ошибка. Сообщения об ошибках компиляции можно получить через log().

Когда кэш на диске отключён, например, с помощью Qt::AA_DisableShaderDiskCache, или контекст OpenGL не поддерживает контекстные бинарники, вызов этой функции эквивалентен addShaderFromSourceCode().

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

См. также addShaderFromSourceCode() и addCacheableShaderFromSourceFile().

bool QOpenGLShaderProgram::addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)

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

Регистрирует шейдер указанного типа type и исходного кода source в этой программе. В отличие от addShaderFromSourceCode(), эта функция не выполняет компиляцию. Компиляция откладывается до link(), и может вообще не происходить, потому что link() может потенциально использовать бинарный файл программы из кэша Qt на диске для шейдеров. Это обычно приводит к значительному увеличению производительности.

Возвращает true, если шейдер был зарегистрирован или, в случае без кэширования, успешно скомпилирован; false, если произошла ошибка. Сообщения об ошибках компиляции можно получить через log().

Когда кэш диска отключён, например, с помощью Qt::AA_DisableShaderDiskCache, или контекст OpenGL не поддерживает двоичные данные контекста, вызов этой функции эквивалентен вызову addShaderFromSourceCode().

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

См. также addShaderFromSourceCode() и addCacheableShaderFromSourceFile().

bool QOpenGLShaderProgram::addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)

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

Регистрирует шейдер указанного типа type и кода source в этой программе. В отличие от addShaderFromSourceCode(), эта функция не выполняет компиляцию. Компиляция отложена до link(), и может вообще не произойти, так как link() потенциально может использовать двоичные данные программы из кэша шейдеров Qt. Это обычно приводит к значительному увеличению производительности.

Когда кэш диска отключён, например, с помощью Qt::AA_DisableShaderDiskCache, или контекст OpenGL не поддерживает двоичные данные контекста, вызов этой функции эквивалентен вызову addShaderFromSourceCode().

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

См. также addShaderFromSourceCode() и addCacheableShaderFromSourceFile().

bool QOpenGLShaderProgram::addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName)

Регистрирует шейдер указанного типа type и файла fileName в этой программе. В отличие от addShaderFromSourceFile(), эта функция не выполняет компиляцию. Компиляция отложена до link(), и может вообще не произойти, так как link() потенциально может использовать двоичные данные программы из кэша шейдеров Qt. Это обычно приводит к значительному увеличению производительности.

Возвращает true, если файл был успешно прочитан, false, если файл не удалось открыть или произошла ошибка при обычной, не кэшируемой компиляции шейдера. Сообщения об ошибках компиляции можно получить через log().

Когда кэш диска отключён, например, с помощью Qt::AA_DisableShaderDiskCache, или контекст OpenGL не поддерживает двоичные данные контекста, вызов этой функции эквивалентен вызову addShaderFromSourceFile().

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

См. также addShaderFromSourceFile() и addCacheableShaderFromSourceCode().

bool QOpenGLShaderProgram::addShader(QOpenGLShader *shader)

Добавляет скомпилированный шейдер shader в эту программу. Возвращает true , если шейдер был добавлен, или false в противном случае.

Владение объектом shader остаётся за вызывающим кодом. Он не будет удалён при удалении этого экземпляра QOpenGLShaderProgram. Это позволяет вызывающему коду добавлять один и тот же шейдер в несколько программ.

См. также addShaderFromSourceCode(), addShaderFromSourceFile(), removeShader(), link() и removeAllShaders().

bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source)

Компилирует source как шейдер указанного типа type и добавляет его в эту программу. Возвращает true , если компиляция прошла успешно, в противном случае — false. Сообщения об ошибках и предупреждениях компиляции будут доступны через log().

Эта функция предназначена для быстрого добавления вершинного и фрагментного шейдеров в программу без предварительного создания экземпляра QOpenGLShader.

См. также addShader(), addShaderFromSourceFile(), removeShader(), link(), log() и removeAllShaders().

bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)

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

Компилирует source как шейдер указанного типа type и добавляет его в эту программу. Возвращает true , если компиляция прошла успешно, в противном случае — false. Сообщения об ошибках и предупреждениях компиляции будут доступны через log().

Эта функция предназначена для быстрого добавления вершинного и фрагментного шейдеров в программу без предварительного создания экземпляра QOpenGLShader.

См. также addShader(), addShaderFromSourceFile(), removeShader(), link(), log() и removeAllShaders().

bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)

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

Компилирует source как шейдер указанного типа type и добавляет его в эту программу. Возвращает true , если компиляция прошла успешно, в противном случае — false. Сообщения об ошибках и предупреждениях компиляции будут доступны через log().

Эта функция предназначена для быстрого добавления вершинного и фрагментного шейдеров в программу без предварительного создания экземпляра QOpenGLShader.

См. также addShader(), addShaderFromSourceFile(), removeShader(), link(), log() и removeAllShaders().

bool QOpenGLShaderProgram::addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName)

Компилирует содержимое файла fileName как шейдер указанного типа type и добавляет его в эту программу. Возвращает true , если компиляция прошла успешно, в противном случае — false. Сообщения об ошибках и предупреждениях компиляции будут доступны через log().

Эта функция предназначена для быстрого добавления вершинного и фрагментного шейдеров в программу без предварительного создания экземпляра QOpenGLShader.

См. также addShader() и addShaderFromSourceCode().

int QOpenGLShaderProgram::attributeLocation(const char *name) const

Возвращает местоположение атрибута name в списке параметров этой программы. Возвращает -1, если name не является допустимым атрибутом для этой программы.

См. также uniformLocation() и bindAttributeLocation().

int QOpenGLShaderProgram::attributeLocation(const QByteArray &name) const

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

Возвращает местоположение атрибута name в списке параметров этой программы. Возвращает -1, если name не является допустимым атрибутом для этой программы.

См. также uniformLocation() и bindAttributeLocation().

int QOpenGLShaderProgram::attributeLocation(const QString &name) const

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

Возвращает местоположение атрибута name в списке параметров этой программы. Возвращает -1, если name не является допустимым атрибутом для этой программы.

См. также uniformLocation() и bindAttributeLocation().

bool QOpenGLShaderProgram::bind()

Привязывает эту программу шейдеров к активному QOpenGLContext и делает её текущей программой шейдеров. Любая ранее привязанная программа шейдеров высвобождается. Это эквивалентно вызову glUseProgram() в programId(). Возвращает true, если программа успешно привязана; в противном случае — false. Если программа шейдеров ещё не была связана или ей нужно пересвязываться, эта функция вызовет link().

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

void QOpenGLShaderProgram::bindAttributeLocation(const char *name, int location)

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

Когда эта функция вызывается после связывания программы, для того, чтобы изменение вступило в силу, необходимо пересвязать программу.

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

void QOpenGLShaderProgram::bindAttributeLocation(const QByteArray &name, int location)

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

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

Когда эта функция вызывается после связывания программы, для того, чтобы изменение вступило в силу, необходимо пересвязать программу.

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

void QOpenGLShaderProgram::bindAttributeLocation(const QString &name, int location)

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

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

Когда эта функция вызывается после связывания программы, для того, чтобы изменение вступило в силу, необходимо пересвязать программу.

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

bool QOpenGLShaderProgram::create()

Запрашивает немедленное создание идентификатора программы шейдеров. Возвращает true при успехе; false в противном случае.

Эта функция в основном полезна при объединении QOpenGLShaderProgram с другими функциями OpenGL, которые работают непосредственно с идентификатором программы шейдеров, например GL_OES_get_program_binary.

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

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

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

QVector<float> QOpenGLShaderProgram::defaultInnerTessellationLevels() const

Возвращает значения по умолчанию для внутренних уровней разбиения, которые будут использоваться генератором примитивов разбиения в том случае, если шейдер управления разбиением не выводит их. Дополнительную информацию об OpenGL и шейдерах разбиения см. на сайте OpenGL Tessellation Shaders.

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

Примечание: Возвращает глобальное значение состояния OpenGL. Оно не специфично для этого экземпляра QOpenGLShaderProgram.

Примечание: Эта функция поддерживается только с OpenGL >= 4.0 и не вернёт корректные результаты с OpenGL ES 3.2.

См. также setDefaultInnerTessellationLevels() и defaultOuterTessellationLevels().

QVector<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const

Возвращает значения по умолчанию для внешних уровней разбиения, которые будут использоваться генератором примитивов разбиения в том случае, если шейдер управления разбиением не выводит их. Дополнительную информацию об OpenGL и шейдерах разбиения см. на сайте OpenGL Tessellation Shaders.

Возвращает QVector с плавающими числами, описывающими внешние уровни разбиения. Вектор всегда будет содержать четыре элемента, но не все из них имеют смысл для каждого режима разбиения.

Примечание: Возвращает глобальное значение состояния OpenGL. Оно не специфично для этого экземпляра QOpenGLShaderProgram.

Примечание: Эта функция поддерживается только с OpenGL >= 4.0 и не вернёт корректные результаты с OpenGL ES 3.2.

См. также setDefaultOuterTessellationLevels() и defaultInnerTessellationLevels().

void QOpenGLShaderProgram::disableAttributeArray(int location)

Отключает массив вершин в location в этой программе шейдеров, который был включён предыдущим вызовом enableAttributeArray().

См. также enableAttributeArray(), setAttributeArray(), setAttributeValue() и setUniformValue().

void QOpenGLShaderProgram::disableAttributeArray(const char *name)

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

Отключает массив вершин с именем name в этой программе шейдеров, который был включён предыдущим вызовом enableAttributeArray().

См. также enableAttributeArray(), setAttributeArray(), setAttributeValue() и setUniformValue().

void QOpenGLShaderProgram::enableAttributeArray(int location)

Включает массив вершин в location в этой программе шейдеров, так что значение, заданное setAttributeArray() в location, будет использоваться программой шейдеров.

См. также disableAttributeArray(), setAttributeArray(), setAttributeValue() и setUniformValue().

void QOpenGLShaderProgram::enableAttributeArray(const char *name)

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

Включает массив вершин с именем name в этой программе шейдеров, так что значение, заданное setAttributeArray() в name, будет использоваться программой шейдеров.

См. также disableAttributeArray(), setAttributeArray(), setAttributeValue() и setUniformValue().

[static] bool QOpenGLShaderProgram::hasOpenGLShaderPrograms(QOpenGLContext *context = nullptr)

Возвращает true если программы шейдеров, написанные на языке OpenGL Shading Language (GLSL), поддерживаются в этой системе; в противном случае — false.

context используется для разрешения расширений GLSL. Если context равен null, используется QOpenGLContext::currentContext().

bool QOpenGLShaderProgram::isLinked() const

Возвращает true если эта программа шейдеров была связана; в противном случае — false.

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

[virtual] bool QOpenGLShaderProgram::link()

Связывает шейдеры, которые были добавлены в эту программу с помощью addShader(). Возвращает true если связывание прошло успешно, иначе — false. Если связывание завершилось неудачей, сообщения об ошибках можно получить с помощью log().

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

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

Когда шейдеры добавлялись в эту программу через addCacheableShaderFromSourceCode() или addCacheableShaderFromSourceFile(), поддерживаются двоичные файлы программ, и кэшированный двоичный файл доступен на диске, фактическая компиляция и связывание пропускаются. Вместо этого link() инициализирует программу с помощью двоичного блока через glProgramBinary(). Если нет кэшированной версии программы или она была сгенерирована с другим номером версии драйвера, шейдеры будут скомпилированы из исходного кода, а программа будет связана обычным образом. Это позволяет беспрепятственно обновлять графические драйверы, не беспокоясь о потенциально несовместимых двоичных форматах.

См. также addShader() и log().

QString QOpenGLShaderProgram::log() const

Возвращает ошибки и предупреждения, возникшие во время последнего вызова link() или addShader() с явно указанным исходным кодом.

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

int QOpenGLShaderProgram::maxGeometryOutputVertices() const

Возвращает аппаратное ограничение для количества вершин, которые может вывести шейдер геометрии.

int QOpenGLShaderProgram::patchVertexCount() const

Возвращает количество вершин на патч, которое используется при отрисовке.

Примечание: Это возвращает глобальное значение состояния OpenGL. Оно не специфично для этого экземпляра QOpenGLShaderProgram.

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

GLuint QOpenGLShaderProgram::programId() const

Возвращает идентификатор OpenGL, связанный с этим программой шейдеров.

См. также QOpenGLShader::shaderId().

void QOpenGLShaderProgram::release()

Освобождает активную программу шейдеров из текущего QOpenGLContext. Это эквивалентно вызову glUseProgram(0).

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

void QOpenGLShaderProgram::removeAllShaders()

Удаляет все шейдеры, которые были добавлены в эту программу ранее. Объекты QOpenGLShader для шейдеров не будут удалены, если они были созданы внешне. Объекты QOpenGLShader, созданные внутри QOpenGLShaderProgram, будут удалены.

См. также addShader() и removeShader().

void QOpenGLShaderProgram::removeShader(QOpenGLShader *shader)

Удаляет shader из этой программы шейдеров. Объект не удаляется.

Программа шейдеров должна быть валидной в текущем QOpenGLContext.

См. также addShader(), link(), и removeAllShaders().

void QOpenGLShaderProgram::setAttributeArray(int location, const GLfloat *values, int tupleSize, int stride = 0)

Устанавливает массив вершинных значений на атрибуте по индексу в этой программе шейдеров. tupleSize указывает количество компонентов на вершину (1, 2, 3 или 4), а stride — количество байтов между вершинами. Значение stride по умолчанию, равное нулю, указывает, что вершины плотно упакованы в values.

Массив станет активным при вызове enableAttributeArray() для location. В противном случае используется значение, указанное с помощью setAttributeValue() для location.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray() и disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(int location, const QVector2D *values, int stride = 0)

Устанавливает массив 2D вершинных значений на атрибуте по индексу в этой программе шейдеров. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, указывает, что вершины плотно упакованы в values.

Массив станет активным при вызове enableAttributeArray() для location. В противном случае используется значение, указанное с помощью setAttributeValue() для location.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray() и disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(int location, const QVector3D *values, int stride = 0)

Устанавливает массив 3D вершинных значений на атрибуте по индексу в этой программе шейдеров. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, указывает, что вершины плотно упакованы в values.

Массив станет активным при вызове enableAttributeArray() для location. В противном случае используется значение, указанное с помощью setAttributeValue() для location.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray() и disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(int location, const QVector4D *values, int stride = 0)

Устанавливает массив 4D вершинных значений на атрибуте по индексу в этой программе шейдеров. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, указывает, что вершины плотно упакованы в values.

Массив станет активным при вызове enableAttributeArray() для location. В противном случае используется значение, указанное с помощью setAttributeValue() для location.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray() и disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(int location, GLenum type, const void *values, int tupleSize, int stride = 0)

Устанавливает массив вершинных значений на атрибуте по индексу в этой программе шейдеров. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, указывает, что вершины плотно упакованы в values.

type указывает тип элементов в массиве values, обычно GL_FLOAT, GL_UNSIGNED_BYTE, и т. д. tupleSize указывает количество компонентов на вершину: 1, 2, 3 или 4.

Массив станет активным при вызове enableAttributeArray() для location. В противном случае используется значение, указанное с помощью setAttributeValue() для location.

Функция setAttributeBuffer() может использоваться для установки массива атрибутов в смещение внутри буфера вершин.

Примечание: Нормализация будет включена. Если это не требуется, вызовите glVertexAttribPointer напрямую через QOpenGLFunctions.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray(), disableAttributeArray() и setAttributeBuffer().

void QOpenGLShaderProgram::setAttributeArray(const char *name, const GLfloat *values, int tupleSize, int stride = 0)

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

Устанавливает массив вершинных значений на атрибуте с именем name в этой программе шейдеров. tupleSize указывает количество компонентов на вершину (1, 2, 3 или 4), а stride — количество байтов между вершинами. Значение stride по умолчанию, равное нулю, указывает, что вершины плотно упакованы в values.

Массив станет активным при вызове enableAttributeArray() для name. В противном случае используется значение, указанное с помощью setAttributeValue() для name.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray() и disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(const char *name, const QVector2D *values, int stride = 0)

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

Устанавливает массив 2D вершинных значений на атрибуте с именем name в этой программе шейдеров. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, указывает, что вершины плотно упакованы в values.

Массив станет активным, когда на name будет вызван метод enableAttributeArray(). В противном случае будет использовано значение, заданное с помощью setAttributeValue() для name.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray() и disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(const char *name, const QVector3D *values, int stride = 0)

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

Задает массив 3D вершинных значений для атрибута с именем name в этой программе шейдеров. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, означает, что вершины плотно упакованы в values.

Массив станет активным, когда на name будет вызван метод enableAttributeArray(). В противном случае будет использовано значение, заданное с помощью setAttributeValue() для name.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray() и disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(const char *name, const QVector4D *values, int stride = 0)

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

Задает массив 4D вершинных значений для атрибута с именем name в этой программе шейдеров. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, означает, что вершины плотно упакованы в values.

Массив станет активным, когда на name будет вызван метод enableAttributeArray(). В противном случае будет использовано значение, заданное с помощью setAttributeValue() для name.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray() и disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(const char *name, GLenum type, const void *values, int tupleSize, int stride = 0)

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

Задает массив вершинных значений для атрибута с именем name в этой программе шейдеров. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, означает, что вершины плотно упакованы в values.

type указывает тип элементов в массиве values, обычно GL_FLOAT, GL_UNSIGNED_BYTE, и т.д. tupleSize указывает количество компонентов на вершину: 1, 2, 3 или 4.

Массив станет активным, когда на name будет вызван метод enableAttributeArray(). В противном случае будет использовано значение, заданное с помощью setAttributeValue() для name.

Функция setAttributeBuffer() может использоваться для установки массива атрибутов в смещение внутри буфера вершин.

См. также setAttributeValue(), setUniformValue(), enableAttributeArray(), disableAttributeArray() и setAttributeBuffer().

void QOpenGLShaderProgram::setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0)

Задает массив вершинных значений для атрибута с номером location в этой программе шейдеров, начиная со смещения offset в текущем связанном буфере вершин. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, означает, что вершины плотно упакованы в массиве значений.

type указывает тип элементов в массиве значений вершин, обычно GL_FLOAT, GL_UNSIGNED_BYTE, и т.д. tupleSize указывает количество компонентов на вершину: 1, 2, 3 или 4.

Массив станет активным, когда на location будет вызван метод enableAttributeArray(). В противном случае будет использовано значение, заданное с помощью setAttributeValue() для location.

Примечание: Нормализация будет включена. Если это не нужно, вызовите glVertexAttribPointer напрямую через QOpenGLFunctions.

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

void QOpenGLShaderProgram::setAttributeBuffer(const char *name, GLenum type, int offset, int tupleSize, int stride = 0)

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

Задает массив вершинных значений для атрибута с именем name в этой программе шейдеров, начиная со смещения offset в текущем связанном буфере вершин. stride указывает количество байтов между вершинами. Значение stride по умолчанию, равное нулю, означает, что вершины плотно упакованы в массиве значений.

type указывает тип элементов в массиве значений вершин, обычно GL_FLOAT, GL_UNSIGNED_BYTE, и т.д. tupleSize указывает количество компонентов на вершину: 1, 2, 3 или 4.

Массив станет активным, когда на name будет вызван метод enableAttributeArray(). В противном случае будет использовано значение, заданное с помощью setAttributeValue() для name.

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

void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat value)

Устанавливает значение атрибута по location в текущем контексте на value.

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

void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y)

Устанавливает значение атрибута по location в текущем контексте на 2D вектор (x, y).

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

void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z)

Устанавливает значение атрибута по location в текущем контексте на 3D вектор (x, y, z).

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

void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

Устанавливает значение атрибута по location в текущем контексте на 4D вектор (x, y, z, w).

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

void QOpenGLShaderProgram::setAttributeValue(int location, const QVector2D &value)

Устанавливает значение атрибута по location в текущем контексте на value.

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

void QOpenGLShaderProgram::setAttributeValue(int location, const QVector3D &value)

Устанавливает значение атрибута по location в текущем контексте на value.

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

void QOpenGLShaderProgram::setAttributeValue(int location, const QVector4D &value)

Устанавливает значение атрибута по location в текущем контексте на value.

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

void QOpenGLShaderProgram::setAttributeValue(int location, const QColor &value)

Устанавливает значение атрибута по location в текущем контексте на value.

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

void QOpenGLShaderProgram::setAttributeValue(int location, const GLfloat *values, int columns, int rows)

Устанавливает атрибут в позиции location в текущем контексте на содержимое values, которое содержит элементы columns, каждый из которых состоит из элементов rows. Значение rows должно быть 1, 2, 3 или 4. Эта функция обычно используется для установки матричных значений и столбцов векторов.

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat value)

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

Устанавливает атрибут с именем name в текущем контексте на значение value.

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y)

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

Устанавливает атрибут с именем name в текущем контексте на 2D вектор (x, y).

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z)

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

Устанавливает атрибут с именем name в текущем контексте на 3D вектор (x, y, z).

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

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

Устанавливает атрибут с именем name в текущем контексте на 4D вектор (x, y, z, w).

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector2D &value)

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

Устанавливает атрибут с именем name в текущем контексте на значение value.

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector3D &value)

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

Устанавливает атрибут с именем name в текущем контексте на значение value.

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector4D &value)

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

Устанавливает атрибут с именем name в текущем контексте на значение value.

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, const QColor &value)

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

Устанавливает атрибут с именем name в текущем контексте на значение value.

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

void QOpenGLShaderProgram::setAttributeValue(const char *name, const GLfloat *values, int columns, int rows)

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

Устанавливает атрибут с именем name в текущем контексте на содержимое values, которое содержит элементы columns, каждый из которых состоит из элементов rows. Значение rows должно быть 1, 2, 3 или 4. Эта функция обычно используется для установки матричных значений и столбцов векторов.

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

void QOpenGLShaderProgram::setDefaultInnerTessellationLevels(const QVector<float> &levels)

Устанавливает значения по умолчанию для внешнего разбиения, используемые генератором примитивов разбиения в случае, если шейдер управления разбиением не выводит их в levels. Подробную информацию об OpenGL и шейдерах разбиения см. на странице OpenGL Tessellation Shaders.

Аргумент levels должен быть QVector, состоящим из 2 чисел с плавающей точкой. Не все значения имеют смысл для всех режимов разбиения. Если вы укажете вектор с менее чем 2 элементами, оставшиеся элементы получат значение по умолчанию 1.

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

Примечание: Эта функция доступна только с OpenGL >= 4.0 и не поддерживается с OpenGL ES 3.2.

См. также defaultInnerTessellationLevels() и setDefaultOuterTessellationLevels().

void QOpenGLShaderProgram::setDefaultOuterTessellationLevels(const QVector<float> &levels)

Устанавливает значения по умолчанию для внешнего разбиения, используемые генератором примитивов разбиения в случае, если шейдер управления разбиением не выводит их в levels. Подробную информацию об OpenGL и шейдерах разбиения см. на странице OpenGL Tessellation Shaders.

Аргумент levels должен быть QVector, состоящим из 4 чисел с плавающей точкой. Не все значения имеют смысл для всех режимов разбиения. Если вы укажете вектор с менее чем 4 элементами, оставшиеся элементы получат значение по умолчанию 1.

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

Примечание: Эта функция доступна только с OpenGL >= 4.0 и не поддерживается с OpenGL ES 3.2.

См. также defaultOuterTessellationLevels() и setDefaultInnerTessellationLevels().

void QOpenGLShaderProgram::setPatchVertexCount(int count)

Используйте эту функцию, чтобы указать OpenGL количество вершин в патче на count. Патч — это пользовательский примитив OpenGL, интерпретация которого полностью определяется стадиями шейдеров разбиения. Поэтому вызов этой функции имеет смысл только при использовании QOpenGLShaderProgram, содержащего шейдеры стадии разбиения. При использовании разбиения OpenGL, единственный примитив, который может быть отрисован с помощью glDraw*() функций, это GL_PATCHES.

Это эквивалентно вызову glPatchParameteri(GL_PATCH_VERTICES, count).

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

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

void QOpenGLShaderProgram::setUniformValue(int location, GLfloat value)

Устанавливает значение униформной переменной в позиции location в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(int location, GLint value)

Устанавливает значение униформной переменной в позиции location в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QColor &color)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на красный, зелёный, синий и альфа компоненты цвета color.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QPoint &point)

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

Устанавливает значение униформной переменной, связанной с name, в текущем контексте на координаты x и y точки point.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QPointF &point)

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

Устанавливает унифицированную переменную, связанную с name в текущем контексте, на координаты x и y точки point.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QSize &size)

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

Устанавливает унифицированную переменную, связанную с name в текущем контексте, на ширину и высоту заданного размера size.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QSizeF &size)

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

Устанавливает унифицированную переменную, связанную с name в текущем контексте, на ширину и высоту заданного размера size.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x2 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 2x2 матрицу value.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x3 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 2x3 матрицу value.

Примечание: Этот метод не учитывает поддержку неквадратных матриц, то есть, таких типов GLSL, как mat2x3, которые присутствуют в современных версиях OpenGL. Вместо этого он обрабатывает унифицированную переменную как массив vec3.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x4 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 2x4 матрицу value.

Примечание: Этот метод не учитывает поддержку неквадратных матриц, то есть, таких типов GLSL, как mat2x4, которые присутствуют в современных версиях OpenGL. Вместо этого он обрабатывает унифицированную переменную как массив vec4.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x2 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 3x2 матрицу value.

Примечание: Этот метод не учитывает поддержку неквадратных матриц, то есть, таких типов GLSL, как mat3x2, которые присутствуют в современных версиях OpenGL. Вместо этого он обрабатывает унифицированную переменную как массив vec2.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x3 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 3x3 матрицу value.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x4 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 3x4 матрицу value.

Примечание: Этот метод не учитывает поддержку неквадратных матриц, то есть, таких типов GLSL, как mat3x4, которые присутствуют в современных версиях OpenGL. Вместо этого он обрабатывает унифицированную переменную как массив vec4.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x2 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 4x2 матрицу value.

Примечание: Этот метод не учитывает поддержку неквадратных матриц, то есть, таких типов GLSL, как mat4x2, которые присутствуют в современных версиях OpenGL. Вместо этого он обрабатывает унифицированную переменную как массив vec2.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x3 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 4x3 матрицу value.

Примечание: Этот метод не учитывает поддержку неквадратных матриц, то есть, таких типов GLSL, как mat4x3, которые присутствуют в современных версиях OpenGL. Вместо этого он обрабатывает унифицированную переменную как массив vec3.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x4 &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 4x4 матрицу value.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat [2][2] value = 2)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 2x2 матрицу value. Элементы матрицы должны быть указаны в столбцовом порядке.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat [3][3] value = 3)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 3x3 матрицу value. Элементы матрицы должны быть указаны в столбцовом порядке.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat [4][4] value = 4)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 4x4 матрицу value. Элементы матрицы должны быть указаны в столбцовом порядке.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QTransform &value)

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

Устанавливает унифицированную переменную с именем name в текущем контексте на 3x3 матрицу преобразования value, заданную как значение QTransform.

Для задания значения QTransform как 4x4 матрицы в шейдере используйте setUniformValue(name, QMatrix4x4(value)).

void QOpenGLShaderProgram::setUniformValue(int location, GLuint value)

Устанавливает унифицированную переменную в позиции location в текущем контексте на значение value. Этот метод следует использовать при установке значений sampler.

Примечание: Этот метод не учитывает поддержку unsigned int в современных версиях OpenGL и поэтому обрабатывает value как GLint и вызывает glUniform1i.

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

void QOpenGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y)

Устанавливает унифицированную переменную в позиции location в текущем контексте на 2D вектор (x, y).

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

void QOpenGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z)

Устанавливает унифицированную переменную в позиции location в текущем контексте на 3D вектор (x, y, z).

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

void QOpenGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

Устанавливает унифицированную переменную в позиции location в текущем контексте на 4D вектор (x, y, z, w).

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

void QOpenGLShaderProgram::setUniformValue(int location, const QVector2D &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QVector3D &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QVector4D &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QColor &color)

Устанавливает значение униформной переменной по адресу location в текущем контексте на красный, зелёный, синий и альфа компоненты цвета color.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QPoint &point)

Устанавливает значение униформной переменной по адресу location в текущем контексте на координаты x и y точки point.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QPointF &point)

Устанавливает значение униформной переменной по адресу location в текущем контексте на координаты x и y точки point.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QSize &size)

Устанавливает значение униформной переменной по адресу location в текущем контексте на ширину и высоту заданного размера size.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QSizeF &size)

Устанавливает значение униформной переменной по адресу location в текущем контексте на ширину и высоту заданного размера size.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x2 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 2x2 матрицу value.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x3 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 2x3 матрицу value.

Примечание: Эта функция не учитывает поддержку неквадратных матриц, то есть GLSL типы, такие как mat2x3, присутствующие в современных версиях OpenGL. Вместо этого она обрабатывает униформную переменную как массив vec3.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x4 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 2x4 матрицу value.

Примечание: Эта функция не учитывает поддержку неквадратных матриц, то есть GLSL типы, такие как mat2x4, присутствующие в современных версиях OpenGL. Вместо этого она обрабатывает униформную переменную как массив vec4.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x2 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 3x2 матрицу value.

Примечание: Эта функция не учитывает поддержку неквадратных матриц, то есть GLSL типы, такие как mat3x2, присутствующие в современных версиях OpenGL. Вместо этого она обрабатывает униформную переменную как массив vec2.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x3 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 3x3 матрицу value.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x4 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 3x4 матрицу value.

Примечание: Эта функция не учитывает поддержку неквадратных матриц, то есть GLSL типы, такие как mat3x4, присутствующие в современных версиях OpenGL. Вместо этого она обрабатывает униформную переменную как массив vec4.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x2 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 4x2 матрицу value.

Примечание: Эта функция не учитывает поддержку неквадратных матриц, то есть GLSL типы, такие как mat4x2, присутствующие в современных версиях OpenGL. Вместо этого она обрабатывает униформную переменную как массив vec2.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x3 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 4x3 матрицу value.

Примечание: Эта функция не учитывает поддержку неквадратных матриц, то есть GLSL типы, такие как mat4x3, присутствующие в современных версиях OpenGL. Вместо этого она обрабатывает униформную переменную как массив vec3.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x4 &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 4x4 матрицу value.

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

void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat [2][2] value = 2)

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

Устанавливает значение униформной переменной по адресу location в текущем контексте на 2x2 матрицу value. Элементы матрицы должны быть указаны в порядке следования столбцов.

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

void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat [3][3] value = 3)

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

Устанавливает значение униформной переменной по адресу location в текущем контексте на 3x3 матрицу value. Элементы матрицы должны быть указаны в порядке следования столбцов.

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

void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat [4][4] value = 4)

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

Устанавливает значение униформной переменной по адресу location в текущем контексте на 4x4 матрицу value. Элементы матрицы должны быть указаны в порядке следования столбцов.

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

void QOpenGLShaderProgram::setUniformValue(int location, const QTransform &value)

Устанавливает значение униформной переменной по адресу location в текущем контексте на 3x3 матрицу преобразования value, которая задаётся как значение QTransform.

Чтобы установить значение QTransform как 4x4 матрицу в шейдере, используйте setUniformValue(location, QMatrix4x4(value)).

void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat value)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, GLint value)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, GLuint value)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на value. Этот метод следует использовать при установке значений сапплеров.

Примечание: Этот метод не учитывает поддержку unsigned int в современных версиях OpenGL и поэтому обрабатывает value как GLint и вызывает glUniform1i.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на 2D вектор (x, y).

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

void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на 3D вектор (x, y, z).

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

void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на 4D вектор (x, y, z, w).

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector2D &value)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector3D &value)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector4D &value)

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

Устанавливает значение униформной переменной с именем name в текущем контексте на value.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const GLfloat *values, int count, int tupleSize)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count элементов из values. Каждый элемент имеет tupleSize компонент. tupleSize должно быть 1, 2, 3 или 4.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const GLint *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count элементов из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const GLuint *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count элементов из values. Этот перегруз используется при установке массива значений сапплеров.

Примечание: Этот метод не учитывает поддержку unsigned int в современных версиях OpenGL и поэтому обрабатывает values как GLint и вызывает glUniform1iv.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector2D *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count 2D векторных элементов из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector3D *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count 3D векторных элементов из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector4D *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count 4D векторных элементов из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x2 *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count матриц 2x2 из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x3 *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count матриц 2x3 из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x4 *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count матриц 2x4 из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x2 *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count матриц 3x2 из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x3 *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count матриц 3x3 из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x4 *values, int count)

Устанавливает массив униформных переменных по адресу location в текущем контексте на count матриц 3x4 из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x2 *values, int count)

Устанавливает массив переменных униформы по адресу location в текущем контексте на count элементов 4x2 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x3 *values, int count)

Устанавливает массив переменных униформы по адресу location в текущем контексте на count элементов 4x3 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x4 *values, int count)

Устанавливает массив переменных униформы по адресу location в текущем контексте на count элементов 4x4 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const GLfloat *values, int count, int tupleSize)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов из values. Каждый элемент содержит tupleSize компонент. tupleSize должно быть 1, 2, 3 или 4.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const GLint *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const GLuint *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов из values. Этот метод следует использовать для установки массива значений самплеров.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector2D *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 2D векторов из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector3D *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 3D векторов из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector4D *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 4D векторов из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x2 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 2x2 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x3 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 2x3 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x4 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 2x4 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x2 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 3x2 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x3 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 3x3 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x4 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 3x4 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x2 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 4x2 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x3 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 4x3 матриц из values.

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

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x4 *values, int count)

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

Устанавливает массив переменных униформы с именем name в текущем контексте на count элементов 4x4 матриц из values.

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

QList<QOpenGLShader *> QOpenGLShaderProgram::shaders() const

Возвращает список всех шейдеров, добавленных в эту программу шейдеров с помощью addShader().

См. также addShader() и removeShader().

int QOpenGLShaderProgram::uniformLocation(const char *name) const

Возвращает адрес переменной униформы name в списке параметров программы шейдеров. Возвращает -1, если name не является допустимой переменной униформы для этой программы шейдеров.

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

int QOpenGLShaderProgram::uniformLocation(const QByteArray &name) const

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

Возвращает местоположение переменной-униформа name в списке параметров этой программы шейдера. Возвращает -1, если name не является допустимой переменной-униформой для этой программы шейдера.

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

int QOpenGLShaderProgram::uniformLocation(const QString &name) const

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

Возвращает местоположение переменной-униформа name в списке параметров этой программы шейдера. Возвращает -1, если name не является допустимой переменной-униформой для этой программы шейдера.

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

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

Spec-Zone.ru

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