QOpenGLShaderProgram Class

QOpenGLShaderProgramクラスは、OpenGLシェーダープログラムをリンクして使用できるようにします。詳細...

ヘッダー #include <QOpenGLShaderProgram>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
継承: QObject

パブリック関数

QOpenGLShaderProgram(QObject*parent= nullptr)
仮想 ~QOpenGLShaderProgram()
ブール addCacheableShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const char*source)
ブール addCacheableShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const QByteArray&source)
ブール addCacheableShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const QString&source)
ブール addCacheableShaderFromSourceFile(QOpenGLShader::ShaderTypetype, const QString&fileName)
ブール addShader(QOpenGLShader*shader)
ブール addShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const char*source)
ブール addShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const QByteArray&source)
ブール addShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const QString&source)
ブール addShaderFromSourceFile(QOpenGLShader::ShaderTypetype, const QString&fileName)
int attributeLocation(const char*name) const
int attributeLocation(const QByteArray&name) const
int attributeLocation(const QString&name) const
ブール bind()
void bindAttributeLocation(const char*name, intlocation)
void bindAttributeLocation(const QByteArray&name, intlocation)
void bindAttributeLocation(const QString&name, intlocation)
ブール create()
QList<float defaultInnerTessellationLevels() const
QList<float defaultOuterTessellationLevels() const
void disableAttributeArray(intlocation)
void disableAttributeArray(const char*name)
void enableAttributeArray(intlocation)
void enableAttributeArray(const char*name)
ブール isLinked() const
仮想ブール link()
QString log() const
int maxGeometryOutputVertices() const
int patchVertexCount() const
GLuint programId() const
void release()
void removeAllShaders()
void removeShader(QOpenGLShader*shader)
void setAttributeArray(intlocation, const QVector2D*values, intstride= 0)
void setAttributeArray(intlocation, const QVector3D*values, intstride= 0)
void setAttributeArray(intlocation, const QVector4D*values, intstride= 0)
void setAttributeArray(intlocation, const GLfloat*values, inttupleSize, intstride= 0)
void setAttributeArray(intlocation, GLenumtype, const void*values, inttupleSize, intstride= 0)
void setAttributeArray(const char*name, const QVector2D*values, intstride= 0)
void setAttributeArray(const char*name, const QVector3D*values, intstride= 0)
void setAttributeArray(const char*name, const QVector4D*values, intstride= 0)
void setAttributeArray(const char*name, const GLfloat*values, inttupleSize, intstride= 0)
void setAttributeArray(const char*name, GLenumtype, const void*values, inttupleSize, intstride= 0)
void setAttributeBuffer(intlocation, GLenum, intoffset, inttupleSize, intstride= 0)
void setAttributeBuffer(const char*name, GLenum, intoffset, inttupleSize, intstride= 0)
void setAttributeValue(intlocation, GLfloatvalue)
void setAttributeValue(intlocation, const QColor&value)
void setAttributeValue(intlocation, const QVector2D&value)
void setAttributeValue(intlocation, const QVector3D&value)
void setAttributeValue(intlocation, const QVector4D&value)
void setAttributeValue(intlocation, GLfloatx, GLfloaty)
void setAttributeValue(intlocation, GLfloatx, GLfloaty, GLfloatz)
void setAttributeValue(intlocation, const GLfloat*values, intcolumns, introws)
void setAttributeValue(intlocation, GLfloatx, GLfloaty, GLfloatz, GLfloatw)
void setAttributeValue(const char*name, GLfloatvalue)
void setAttributeValue(const char*name, const QColor&value)
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, GLfloatx, GLfloaty)
void setAttributeValue(const char*name, GLfloatx, GLfloaty, GLfloatz)
void setAttributeValue(const char*name, const GLfloat*values, intcolumns, introws)
void setAttributeValue(const char*name, GLfloatx, GLfloaty, GLfloatz, GLfloatw)
void setDefaultInnerTessellationLevels(const QList<float>&levels)
void setDefaultOuterTessellationLevels(const QList<float>&levels)
void setPatchVertexCount(intcount)
void setUniformValue(intlocation, GLfloatvalue)
void setUniformValue(intlocation, GLintvalue)
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 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 QTransform&value)
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 setUniformValue(intlocation, const GLfloat[2][2]value)
void setUniformValue(intlocation, const GLfloat[3][3]value)
void setUniformValue(intlocation, const GLfloat[4][4]value)
void setUniformValue(const char*name, GLfloatx, GLfloaty)
void setUniformValue(const char*name, GLfloatx, GLfloaty, GLfloatz)
void setUniformValue(const char*name, GLfloatx, GLfloaty, GLfloatz, GLfloatw)
void setUniformValue(intlocation, GLuintvalue)
void setUniformValue(intlocation, const QColor&color)
void setUniformValue(intlocation, const QMatrix2x2&value)
void setUniformValue(intlocation, const QMatrix2x3&value)
void setUniformValue(intlocation, const QMatrix2x4&value)
void setUniformValue(intlocation, const QMatrix3x2&value)
void setUniformValue(intlocation, const QMatrix3x3&value)
void setUniformValue(intlocation, const QMatrix3x4&value)
void setUniformValue(intlocation, const QMatrix4x2&value)
void setUniformValue(intlocation, const QMatrix4x3&value)
void setUniformValue(intlocation, const QMatrix4x4&value)
void setUniformValue(intlocation, const QPoint&point)
void setUniformValue(intlocation, const QPointF&point)
void setUniformValue(intlocation, const QSize&size)
void setUniformValue(intlocation, const QSizeF&size)
void setUniformValue(intlocation, const QTransform&value)
void setUniformValue(intlocation, const QVector2D&value)
void setUniformValue(intlocation, const QVector3D&value)
void setUniformValue(intlocation, const QVector4D&value)
void setUniformValue(intlocation, GLfloatx, GLfloaty)
void setUniformValue(intlocation, GLfloatx, GLfloaty, GLfloatz)
void setUniformValue(intlocation, GLfloatx, GLfloaty, GLfloatz, GLfloatw)
void setUniformValue(const char*name, GLfloatvalue)
void setUniformValue(const char*name, GLintvalue)
void setUniformValue(const char*name, GLuint)
void setUniformValue(const char*name, const GLfloat[2][2]value)
void setUniformValue(const char*name, const GLfloat[3][3]value)
void setUniformValue(const char*name, const GLfloat[4][4]value)
void setUniformValue(const char*name, const QColor&color)
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 setUniformValueArray(intlocation, const GLint*values, intcount)
void setUniformValueArray(intlocation, const GLuint*values, intcount)
void setUniformValueArray(intlocation, const QMatrix2x2*values, intcount)
void setUniformValueArray(intlocation, const QMatrix2x3*values, intcount)
void setUniformValueArray(intlocation, const QMatrix2x4*values, intcount)
void setUniformValueArray(intlocation, const QMatrix3x2*values, intcount)
void setUniformValueArray(intlocation, const QMatrix3x3*values, intcount)
void setUniformValueArray(intlocation, const QMatrix3x4*values, intcount)
void setUniformValueArray(intlocation, const QMatrix4x2*values, intcount)
void setUniformValueArray(intlocation, const QMatrix4x3*values, intcount)
void setUniformValueArray(intlocation, const QMatrix4x4*values, intcount)
void setUniformValueArray(intlocation, const QVector2D*values, intcount)
void setUniformValueArray(intlocation, const QVector3D*values, intcount)
void setUniformValueArray(intlocation, const QVector4D*values, intcount)
void setUniformValueArray(intlocation, const GLfloat*values, intcount, inttupleSize)
void setUniformValueArray(const char*name, const GLint*values, intcount)
void setUniformValueArray(const char*name, const GLuint*values, intcount)
void setUniformValueArray(const char*name, const QMatrix2x2*values, intcount)
void setUniformValueArray(const char*name, const QMatrix2x3*values, intcount)
void setUniformValueArray(const char*name, const QMatrix2x4*values, intcount)
void setUniformValueArray(const char*name, const QMatrix3x2*values, intcount)
void setUniformValueArray(const char*name, const QMatrix3x3*values, intcount)
void setUniformValueArray(const char*name, const QMatrix3x4*values, intcount)
void setUniformValueArray(const char*name, const QMatrix4x2*values, intcount)
void setUniformValueArray(const char*name, const QMatrix4x3*values, intcount)
void setUniformValueArray(const char*name, const QMatrix4x4*values, intcount)
void setUniformValueArray(const char*name, const QVector2D*values, intcount)
void setUniformValueArray(const char*name, const QVector3D*values, intcount).
void setUniformValueArray(const char*name, const QVector4D*values, intcount)
void setUniformValueArray(const char*name, const GLfloat*values, intcount, inttupleSize)
QList<QOpenGLShader *>(QList<QOpenGLShader shaders() const
int uniformLocation(const char*name) const
int uniformLocation(const QByteArray&name) const
int uniformLocation(const QString&name) const

静的パブリックメンバ

bool hasOpenGLShaderPrograms(QOpenGLContext *context = nullptr)

詳しい説明

はじめに

このクラスはOpenGLシェーディング言語(GLSL)とOpenGL/ESシェーディング言語(GLSL/ES)で書かれたシェーダープログラムをサポートします。

QOpenGLShader QOpenGLShaderProgramは、頂点シェーダとフラグメント・シェーダのコンパイルとリンクの詳細からプログラマを保護します。

次の例では、提供されたソースcode を使用して頂点シェーダープログラムを作成します。コンパイルとリンクが完了すると、QOpenGLShaderProgram::bind() を呼び出すことで、現在のQOpenGLContext でシェーダープログラムがアクティブになります:

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 には変数修飾子highpmediumplowp がありません。

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);

バイナリシェーダとプログラム

バイナリー・シェーダーは、QOpenGLShader::shaderId() の戻り値にglShaderBinary() を使用して指定することができます。バイナリを含むQOpenGLShader インスタンスは、addShader() でシェーダープログラムに追加し、link() で通常の方法でリンクすることができます。

バイナリ・プログラムは、programId ()の戻り値でglProgramBinaryOES() を使用して指定することができる。アプリケーションはlink() を呼び出す必要があります。 () は、シェーダープログラムがすでに指定されリンクされていることに気づき、シェーダープログラムに対して他の操作を実行できるようにします。シェーダープログラムの ID は、create() 関数を使用して明示的に作成できます。

プログラムバイナリのキャッシュ

Qt 5.9 では、プログラム・バイナリをディスクにキャッシュする機能が追加されました。これを有効にするには、addCacheableShaderFromSourceCode() とaddCacheableShaderFromSourceFile() の使用に切り替えてください。OpenGL ES 3.x コンテキストまたはGL_ARB_get_program_binary のサポートがあれば、QStandardPaths::GenericCacheLocation またはQStandardPaths::CacheLocation のプログラムバイナリを透過的にキャッシュします。サポートがない場合、キャッシュ可能な関数バリアントを呼び出すと、通常のものと同等になります。

注意: いくつかのドライバは、拡張を宣伝していたり、OpenGL ES 3.0を提供していても、利用可能なバイナリ形式を持っていません。この場合、プログラムのバイナリサポートは無効になります。

QOpenGLShaderも参照のこと

メンバ関数ドキュメント

[explicit] QOpenGLShaderProgram::QOpenGLShaderProgram(QObject *parent = nullptr)

新しいシェーダープログラムを構築し、parent にアタッチします。 このプログラムは、addShader() が呼び出されるまで無効です。

シェーダプログラムは、現在のQOpenGLContext に関連付けられます。

addShader()も参照してください

[virtual noexcept] QOpenGLShaderProgram::~QOpenGLShaderProgram()

このシェーダープログラムを削除する。

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

指定されたtypesource のシェーダーをこのプログラムに登録する。addShaderFromSourceCode() とは異なり、この関数はコンパイルを行いません。コンパイルはlink() に先送りされ、link() は Qt のシェーダディスクキャッシュからプログラムバイナリを使用する可能性があるため、全く行われない場合もあります。これは通常、パフォーマンスの大幅な向上につながります。

シェーダが登録された場合、またはキャッシュされていない場合に正常にコンパイルされた場合はtrueを返し、エラーがあった場合はfalseを返します。コンパイルのエラーメッセージはlog() で取得できます。

ディスクキャッシュが無効になっている場合(たとえばQt::AA_DisableShaderDiskCache など)、または OpenGL コンテキストがコンテキストバイナリをサポートしていない場合、この関数を呼び出すことはaddShaderFromSourceCode() と同じです。

addShaderFromSourceCode() およびaddCacheableShaderFromSourceFile()も参照して ください。

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

これはオーバーロードされた関数です。

指定されたtypesource のシェーダーをこのプログラムに登録する。addShaderFromSourceCode() とは異なり、この関数はコンパイルを行いません。コンパイルはlink() まで延期され、link() は Qt のシェーダディスクキャッシュからプログラムバイナリを使用する可能性があるため、全く行われない場合もあります。これは通常、パフォーマンスの大幅な向上につながります。

シェーダが登録された場合、またはキャッシュされていない場合に正常にコンパイルされた場合はtrueを返し、エラーがあった場合はfalseを返します。コンパイルのエラーメッセージはlog() で取得できます。

ディスクキャッシュが無効になっている場合(たとえばQt::AA_DisableShaderDiskCache など)、または OpenGL コンテキストがコンテキストバイナリをサポートしていない場合、この関数を呼び出すことはaddShaderFromSourceCode() と同じです。

addShaderFromSourceCode() およびaddCacheableShaderFromSourceFile()も参照して ください。

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

これはオーバーロードされた関数です。

指定されたtypesource のシェーダーをこのプログラムに登録する。addShaderFromSourceCode() とは異なり、この関数はコンパイルを行いません。コンパイルはlink() まで延期され、link() は Qt のシェーダディスクキャッシュからプログラムバイナリを使用する可能性があるため、全く行われない場合もあります。これは通常、パフォーマンスの大幅な向上につながります。

例えば、Qt::AA_DisableShaderDiskCache によってディスクキャッシュが無効になっている場合や、OpenGL コンテキストがコンテキストバイナリをサポートしていない場合、この関数を呼び出すことはaddShaderFromSourceCode() と同じです。

addShaderFromSourceCode() およびaddCacheableShaderFromSourceFile()も参照の こと。

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

指定されたtypefileName のシェーダーをこのプログラムに登録する。addShaderFromSourceFile() とは異なり、この関数はコンパイルを行いません。コンパイルはlink() に先送りされ、link() は Qt のシェーダディスクキャッシュからプログラムバイナリを使用する可能性があるため、全く行われない場合もあります。これは通常、パフォーマンスの大幅な向上につながります。

ファイルが正常に読み込まれた場合は true を返し、ファイルが開けなかったり、シェーダの通常の非キャッシュ・コンパイルに失敗した場合は false を返します。コンパイルのエラーメッセージはlog() で取得できます。

ディスクキャッシュが無効になっている場合(たとえばQt::AA_DisableShaderDiskCache など)、または OpenGL コンテキストがコンテキストバイナリをサポートしていない場合、この関数を呼び出すことはaddShaderFromSourceFile() と同じです。

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 の位置を返します。name がこのシェーダプログラムの有効な属性でない場合は -1 を返します。

uniformLocation() およびbindAttributeLocation()も参照してください

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

これはオーバーロードされた関数です。

このシェーダープログラムのパラメータリスト内のアトリビュートname の位置を返します。name がこのシェーダプログラムの有効な属性でない場合は -1 を返します。

uniformLocation() およびbindAttributeLocation()も参照してください

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

これはオーバーロードされた関数です。

このシェーダープログラムのパラメータリスト内のアトリビュートname の位置を返します。name がこのシェーダプログラムの有効な属性でない場合は -1 を返します。

uniformLocation() およびbindAttributeLocation()も参照してください

bool QOpenGLShaderProgram::bind()

このシェーダープログラムをアクティブなQOpenGLContext にバインドし、現在のシェーダープログラムにします。以前にバインドされていたシェーダープログラムは解放されます。これはprogramId() でglUseProgram() を呼び出すのと同じです。プログラムのバインドに成功した場合は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()

シェーダープログラムの ID を直ちに作成するよう要求する。成功すればtrue を返し、そうでなければfalse を返す。

この関数は主に、GL_OES_get_program_binary のようにシェーダープログラム ID を直接操作する他の OpenGL 関数とQOpenGLShaderProgram を組み合わせる場合に便利です。

シェーダープログラムが通常使用される場合、シェーダープログラムの id はオンデマンドで作成されます。

programId()も参照

QList<float> QOpenGLShaderProgram::defaultInnerTessellationLevels() const

テセレーションコントロールシェーダーが出力しない場合に、テセレーションプリミティブジェネレーターが使用するデフォルトの内部テセレーションレベルを返します。OpenGLとテッセレーション・シェーダーの詳細については、OpenGLテッセレーション・シェーダーを参照してください。

内部のテセレーション・レベルを記述する浮動小数点数のQList 。ベクトルは常に2つの要素を持ちますが、すべてのテッセレーションモードで意味を持つわけではありません。

注意: これはグローバルなOpenGLステートの値を返します。このQOpenGLShaderProgram インスタンスに固有のものではありません。

注意 :この関数はOpenGL >= 4.0でのみサポートされており、OpenGL ES 3.2では有効な結果を返しません。

setDefaultInnerTessellationLevels() およびdefaultOuterTessellationLevels()も参照してください

QList<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const

テセレーションコントロールシェーダーが出力しない場合に、テセレーションプリミティブジェネレーターが使用するデフォルトの外側テセレーションレベルを返します。OpenGLとテッセレーション・シェーダーの詳細については、OpenGLテッセレーション・シェーダーを参照してください。

外側のテッセレーション・レベルを記述するfloatのQList 。ベクトルは常に4つの要素を持ちますが、すべてのテッセレーションモードで意味を持つわけではありません。

注意: これはグローバルな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)

locationsetAttributeArray() で設定された値がシェーダープログラムで使用されるように、このシェーダープログラムでlocation の頂点配列を有効にします。

disableAttributeArray(),setAttributeArray(),setAttributeValue(),setUniformValue()も参照

void QOpenGLShaderProgram::enableAttributeArray(const char *name)

これはオーバーロードされた関数です。

namesetAttributeArray() で設定された値がシェーダープログラムで使用されるように、このシェーダープログラムでname と呼ばれる頂点配列を有効にします。

disableAttributeArray(),setAttributeArray(),setAttributeValue(),setUniformValue()も参照してください

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

OpenGL Shading Language(GLSL)で書かれたシェーダープログラムがこのシステムでサポートされている場合はtrue 、そうでない場合はfalseを返す。

GLSL 拡張を解決するためにcontext が使用される。contextnullptr の場合、QOpenGLContext::currentContext() が使用される。

bool QOpenGLShaderProgram::isLinked() const

このシェーダープログラムがリンクされていればtrue を返し、そうでなければ false を返す。

link()も参照してください

このプログラムにaddShader() で追加されたシェーダーをリンクします。リンクに成功した場合はtrue を返し、失敗した場合は false を返します。リンクに失敗した場合は、log() でエラー・メッセージを取得できます。

サブクラスはこの関数をオーバーライドして、特定のシェーダ・プログラムで使用する属性やユニフォーム変数を初期化できます。

シェーダープログラムがすでにリンクされている場合、この関数を再度呼び出すと、強制的に再リンクされます。

シェーダがaddCacheableShaderFromSourceCode() またはaddCacheableShaderFromSourceFile() によってこのプログラムに追加された場合、プログラム・バイナリがサポートされ、キャッシュされたバイナリがディスク上で利用可能であるため、実際のコンパイルとリンクは省略されます。代わりに、link() は glProgramBinary() を介してバイナリ blob でプログラムを初期化します。キャッシュされたバージョンのプログラムがない場合や、異なるドライバ・バージョンで生成された場合は、シェーダはソースからコンパイルされ、プログラムは普通にリンクされます。これにより、潜在的に互換性のないバイナリ形式を心配することなく、グラフィックドライバのシームレスなアップグレードが可能になります。

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 オブジェクトは、外部で構築された場合は削除されません。QOpenGLShaderProgram によって内部で構築されたQOpenGLShader オブジェクトは削除されます。

addShader() およびremoveShader()も参照してください

void QOpenGLShaderProgram::removeShader(QOpenGLShader *shader)

このシェーダプログラムからshader を削除します。オブジェクトは削除されません。

シェーダプログラムは、現在のQOpenGLContext で有効でなければなりません。

addShader()、link()、removeAllShaders()も参照してください

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

このシェーダープログラムのlocation のアトリビュートに 2D 頂点の配列values を設定します。stride は頂点間のバイト数を示します。デフォルト値stride のゼロは、頂点がvalues に密集していることを示します。

この配列は、locationenableAttributeArray() が呼び出されたときにアクティブになります。そうでない場合は、location に対してsetAttributeValue() で指定された値が使用されます。

setAttributeValue()、setUniformValue()、enableAttributeArray()、disableAttributeArray()も参照

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

このシェーダープログラムのlocation のアトリビュートに 3D 頂点の配列values を設定する。stride は頂点間のバイト数を示します。デフォルトのstride 値であるゼロは、頂点がvalues に密集していることを示します。

この配列は、locationenableAttributeArray() が呼び出されたときにアクティブになります。そうでない場合は、location に対してsetAttributeValue() で指定された値が使用されます。

setAttributeValue()、setUniformValue()、enableAttributeArray()、disableAttributeArray()も参照

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

このシェーダープログラムのlocation のアトリビュートに 4 次元頂点values の配列を設定します。stride は頂点間のバイト数を示します。デフォルトのstride 値が 0 の場合は、頂点がvalues に密集していることを示します。

この配列は、locationenableAttributeArray() が呼び出されたときにアクティブになります。そうでない場合は、location に対してsetAttributeValue() で指定された値が使用されます。

setAttributeValue()、setUniformValue()、enableAttributeArray()、disableAttributeArray()も参照

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

このシェーダープログラムのlocation の属性に頂点values の配列を設定します。tupleSize は頂点あたりの成分数(1、2、3、4)を示し、stride は頂点間のバイト数を示します。デフォルトのstride 値が 0 の場合は、頂点がvalues に密集していることを示します。

配列が有効になるのは、locationenableAttributeArray() が呼び出されたときである。そうでない場合は、locationsetAttributeValue() で指定された値が使用される。

setAttributeValue()、setUniformValue()、enableAttributeArray()、disableAttributeArray()も参照

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

このシェーダープログラムのlocation のアトリビュートに頂点values の配列を設定する。stride は頂点間のバイト数を示します。デフォルトのstride 値であるゼロは、頂点がvalues に密集していることを示します。

typevalues 配列の要素のタイプを示し、通常はGL_FLOATGL_UNSIGNED_BYTE などです。tupleSize は頂点あたりの要素数を示し、1、2、3、4 のいずれかです。

配列がアクティブになるのは、locationenableAttributeArray() が呼び出されたときである。そうでない場合は、location に対してsetAttributeValue() で指定された値が使用される。

setAttributeBuffer ()関数を使用すると、属性配列を頂点バッファ内のオフセットに設定できます。

注意: 正規化が有効になります。これを望まない場合は、QOpenGLFunctions を介して glVertexAttribPointer を直接呼び出します。

setAttributeValue(),setUniformValue(),enableAttributeArray(),disableAttributeArray(),setAttributeBuffer()も参照してください

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

これはオーバーロードされた関数です。

このシェーダプログラムでname と呼ばれるアトリビュートに 2D 頂点の配列values を設定します。stride は頂点間のバイト数を示します。デフォルトのstride 値がゼロの場合、頂点がvalues に密集していることを示します。

この配列は、nameenableAttributeArray() が呼び出されたときにアクティブになります。そうでない場合は、name に対してsetAttributeValue() で指定された値が使用される。

setAttributeValue(),setUniformValue(),enableAttributeArray(),disableAttributeArray()も参照

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

これはオーバーロードされた関数です。

このシェーダプログラムのname という属性に、3D 頂点の配列values を設定します。stride は頂点間のバイト数を示します。デフォルトのstride 値がゼロの場合、頂点がvalues に密集していることを示します。

この配列は、nameenableAttributeArray() が呼び出されたときにアクティブになります。そうでない場合は、name に対してsetAttributeValue() で指定された値が使用される。

setAttributeValue(),setUniformValue(),enableAttributeArray(),disableAttributeArray()も参照

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

これはオーバーロードされた関数です。

このシェーダプログラムのname というアトリビュートに 4 次元頂点values の配列を設定します。stride は頂点間のバイト数を示します。デフォルトのstride 値がゼロの場合、頂点がvalues に密集していることを示します。

この配列は、nameenableAttributeArray() が呼び出されたときにアクティブになります。そうでない場合は、name に対してsetAttributeValue() で指定された値が使用される。

setAttributeValue(),setUniformValue(),enableAttributeArray(),disableAttributeArray()も参照

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

これはオーバーロードされた関数です。

このシェーダプログラムでname と呼ばれる属性に頂点values の配列を設定します。tupleSize は頂点あたりの成分数(1、2、3、4)を示し、stride は頂点間のバイト数を示します。デフォルトのstride 値が 0 の場合は、頂点がvalues に密集していることを示します。

この配列は、nameenableAttributeArray() が呼び出されたときにアクティブになる。そうでない場合は、name に対してsetAttributeValue() で指定された値が使用される。

setAttributeValue(),setUniformValue(),enableAttributeArray(),disableAttributeArray()も参照

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

これはオーバーロードされた関数です。

このシェーダプログラムでname と呼ばれるアトリビュートに頂点values の配列を設定します。stride は頂点間のバイト数を示します。デフォルトのstride 値がゼロの場合は、頂点がvalues に密に詰め込まれていることを示します。

typevalues 配列の要素のタイプを示し、通常はGL_FLOATGL_UNSIGNED_BYTE などです。tupleSize は頂点ごとの要素数を示し、1、2、3、4 のいずれかです。

配列がアクティブになるのは、nameenableAttributeArray() が呼び出されたときである。そうでない場合は、namesetAttributeValue() で指定された値が使用される。

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 のいずれかです。

配列が有効になるのは、locationenableAttributeArray() が呼び出されたときです。そうでない場合は、locationsetAttributeValue() で指定された値が使用されます。

注意: 正規化が有効になる。これを望まない場合は、QOpenGLFunctions を介して glVertexAttribPointer を直接呼び出します。

setAttributeArray()も参照してください

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

これはオーバーロードされた関数です。

このシェーダプログラムでname と呼ばれるアトリビュートに、現在バインドされている頂点バッファの特定のoffset から始まる頂点値の配列を設定します。stride は頂点間のバイト数を示します。デフォルトのstride 値が 0 の場合は、頂点が値配列に密に詰め込まれていることを示します。

type は頂点値配列の要素の種類を示し、通常はGL_FLOAT,GL_UNSIGNED_BYTE などです。tupleSize は頂点ごとの要素数を示し、1、2、3、4 のいずれかです。

name この配列は、nameenableAttributeArray() が呼び出されたときに有効になります。そうでない場合は、setAttributeValue() で指定された値が使用されます。

setAttributeArray()も参照

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

現在のコンテキストのlocation にある属性をvalue に設定します。

setUniformValue()も参照

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

現在のコンテキストのlocation にある属性をvalue に設定します。

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, 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, const GLfloat *values, int columns, int rows)

現在のコンテキストのlocation の属性を、values の内容に設定する。 はcolumns 要素を含み、各要素はrows 要素で構成される。rows の値は 1, 2, 3, 4 のいずれかでなければならない。この関数は通常、行列の値や列ベクトルを設定するために使用される。

setUniformValue()も参照のこと

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

現在のコンテキストのlocation の属性を 4 次元ベクトル (x,y,z,w) に設定します。

setUniformValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる属性をvalue に設定します。

setUniformValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる属性をvalue に設定します。

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, 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, const GLfloat *values, int columns, int rows)

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる属性をvalues の内容に設定します。 はcolumns 要素を含み、各要素はrows 要素で構成されています。rows の値は 1, 2, 3, または 4 でなければなりません。この関数は通常、行列の値や列ベクトルを設定するために使用されます。

setUniformValue()も参照のこと

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる属性を 4 次元ベクトル (x,y,z,w) に設定します。

setUniformValue()も参照してください

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

テセレーション・コントロール・シェーダーがlevels に出力しない場合に、テセレーション・プリミティブ・ジェネレーターが使用するデフォルトの外側テセレーション・レベルを設定します。OpenGLとテッセレーション・シェーダの詳細については、OpenGLテッセレーション・シェーダを参照してください。

引数levels は、2つの浮動小数点からなるQList 。すべてのテッセレーション・モードにおいて、すべての値が意味を持つわけではありません。要素が2つ以下のベクトルを指定した場合、残りの要素にはデフォルト値の1が与えられます。

注意: これはグローバルなOpenGLの状態を変更するものであり、このQOpenGLShaderProgram インスタンスに固有のものではありません。QOpenGLShaderProgram はあなたのためにこれを適用しないので、必要なときにあなたのレンダー関数でこれを呼び出す必要があります。これは純粋に便利な関数です。

注意: この関数はOpenGL >= 4.0でのみ使用可能で、OpenGL ES 3.2ではサポートされていません。

defaultInnerTessellationLevels() およびsetDefaultOuterTessellationLevels()参照してください。

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

テセレーション・コントロール・シェーダーがlevels に出力しない場合に、テセレーション・プリミティブ・ジェネレーターが使用するデフォルトの外側テセレーション・レベルを設定します。OpenGLとテッセレーション・シェーダの詳細については、OpenGLテッセレーション・シェーダを参照してください。

引数levels は、4つの浮動小数点からなるQList 。すべてのテッセレーション・モードにおいて、すべての値が意味を持つわけではありません。要素が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 QMatrix3x4 &value)

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を,3x4 の行列value にセットします.

注意: この関数は,最近の OpenGL バージョンに存在する非正方行列サポート,つまり mat3x4 のような GLSL 型を意識していません.その代わりに,vec4 の配列として一様行列を扱います.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を,4x2 の行列value にセットします.

注意: この関数は,最近の OpenGL バージョンに存在する非正方行列サポート,つまり mat4x2 のような GLSL 型を意識していません.その代わりに,vec2 の配列として一様行列を扱います.

setAttributeValue()も参照して ください.

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を,4x3 の行列value にセットします.

注意: この関数は,最近の OpenGL バージョンに存在する非正方行列サポート,つまり mat4x3 のような GLSL 型を意識していません.その代わりに,vec3 の配列として一様行列を扱います.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を 4x4 行列value に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname に関連付けられた一様変数を、point の x 座標と y 座標に設定します。

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname に関連付けられた一様変数を、point の x 座標と y 座標に設定します。

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 QTransform &value)

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を、QTransform の値として指定される 3x3 変換行列value に設定します。

QTransform の値をシェーダ内の 4x4 行列として設定するには、setUniformValue(name, QMatrix4x4(value)) を使用します。

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::setUniformValue(int location, const GLfloat[2][2] value)

これはオーバーロードされた関数である。

現在のコンテキストにおける一様変数location を 2x2 行列value に設定します。行列の要素は,列の長さ順に指定しなければなりません.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストにおけるlocation の一様変数を,3x3 の行列value に設定します.行列の要素は,列の長さ順に指定しなければなりません.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストにおけるlocation の一様変数を,4x4 行列value に設定します.行列の要素は,列の長さ順に指定する必要があります.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を2次元ベクトル (x,y) に設定します。

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を3次元ベクトル (x,y,z) に設定します。

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を4次元ベクトル (x,y,z,w) に設定します。

setAttributeValue()も参照してください

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

現在のコンテキストのlocation にある一様変数をvalue に設定します。 この関数は、サンプラーの値を設定するときに使用する必要があります。

注意: この関数は、最近のOpenGLバージョンにおける符号なしintのサポートを認識していないため、value をGLintとして扱い、glUniform1iを呼び出します。

setAttributeValue()も参照してください

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

現在のコンテキストのlocation の一様変数を、color の赤、緑、青、アルファ成分に設定します。

setAttributeValue()も参照

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

現在のコンテキストにおけるlocation の一様変数を 2x2 行列value に設定します。

setAttributeValue()も参照

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

現在のコンテキストlocation にある一様変数を 2x3 行列value に設定します.

注意: この関数は、最近の OpenGL バージョンに存在する、非正方行列サポート、つまり mat2x3 のような GLSL 型を意識していません。その代わりに,vec3 の配列として一様行列を扱います.

setAttributeValue()も参照してください

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

現在のコンテキストlocation にある一様変数を 2x4 行列value に設定します.

注意: この関数は、最近の OpenGL バージョンに存在する、非正方行列サポート、つまり mat2x4 のような GLSL 型を意識していません。その代わりに,vec4 の配列として一様行列を扱います.

setAttributeValue()も参照して ください。

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

現在のコンテキストlocation にある一様変数を 3x2 行列value に設定します.

注意: この関数は,最近の OpenGL バージョンに存在する非正方行列サポート,つまり mat3x2 のような GLSL 型を意識していません.その代わりに,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 に設定します.

注意: この関数は、最近の OpenGL バージョンに存在する、非正方行列サポート、つまり mat3x4 のような GLSL 型を意識していません。その代わりに,vec4 の配列として一様行列を扱います.

setAttributeValue()も参照して ください.

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

現在のコンテキストlocation にある一様変数を 4x2 行列value に設定します.

注意: この関数は,最近の OpenGL バージョンに存在する非正方行列サポート,つまり mat4x2 のような GLSL 型を意識していません.その代わりに,vec2 の配列として一様行列を扱います.

setAttributeValue()も参照して ください.

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

現在のコンテキストlocation にある一様変数を 4x3 行列value に設定します.

注意: この関数は、最近の OpenGL バージョンに存在する非正方行列サポート、つまり mat4x3 のような GLSL 型を意識していません。その代わりに,vec3 の配列として一様行列を扱います.

setAttributeValue()も参照してください

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

現在のコンテキストにおけるlocation の一様変数を 4x4 行列value に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様変数を、point の x 座標と y 座標に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様変数を、point の x 座標と y 座標に設定します。

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 QTransform &value)

現在のコンテキストのlocation にある一様変数を、QTransform の値として指定された 3x3 変換行列value に設定します。

シェーダでQTransform の値を 4x4 の行列として設定するには、setUniformValue(location, QMatrix4x4(value)) を使用します。

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, 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 にある一様変数を、4次元ベクトル (x,y,z,w) に設定します。

setAttributeValue()も参照してください

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 に設定します。 この関数は、サンプラーの値を設定するときに使用する必要があります。

注意: この関数は、最近のOpenGLバージョンにおける符号なしintのサポートを認識していないため、value をGLintとして扱い、glUniform1iを呼び出します。

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を,2x2 行列value に設定します.行列の要素は,列の長さ順に指定しなければなりません.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を,3x3 の行列value に設定します.行列の要素は,列の長さ順に指定しなければなりません.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を,4x4 行列value に設定します.行列の要素は,列の長さ順に指定しなければなりません.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を、color の赤、緑、青、アルファ成分に設定します。

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 にセットします.

注意: この関数は,最近の OpenGL バージョンに存在する非正方行列サポート,つまり mat2x3 のような GLSL 型を意識していません.その代わりに,vec3 の配列として一様行列を扱います.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を,2x4 の行列value にセットします.

注意: この関数は,最近の OpenGL バージョンに存在する非正方行列サポート,つまり mat2x4 のような GLSL 型を意識していません.その代わりに,vec4 の配列として一様行列を扱います.

setAttributeValue()も参照して ください。

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を,3x2 の行列value にセットします.

注意: この関数は,最近の OpenGL バージョンに存在する非正方行列サポート,つまり mat3x2 のような GLSL 型を意識していません.その代わりに,vec2 の配列として一様行列を扱います.

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数を 3x3 行列value に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様な変数配列をvaluescount 要素に設定します。

setAttributeValue()も参照のこと

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

現在のコンテキストのlocation の一様変数配列をvaluescount 要素に設定します。 このオーバーロードは、サンプラー値の配列を設定するときに使用する必要があります。

注意: この関数は、最近のOpenGLバージョンにおける符号なしintのサポートを認識していないため、values をGLintとして扱い、glUniform1ivを呼び出します。

setAttributeValue()も参照してください

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

現在のコンテキストにおけるlocation の一様変数配列を、valuescount 2x2 行列要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストにおけるlocation の一様変数配列を、valuescount 2x3 行列要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様変数配列を、valuescount 2x4 行列要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストにおけるlocation の一様変数配列を、valuescount 3x2 行列要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストにおけるlocation の一様変数配列を、valuescount 3x3 行列要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストにおけるlocation の一様変数配列を、valuescount 3x4 行列要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様変数配列を、valuescount 4x2 行列要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation の一様変数配列を、valuescount 4x3 行列要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストにおけるlocation の一様変数配列を,valuescount 4x4 行列要素に設定します.

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様な変数配列を、valuescount 2D ベクトル要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様な変数配列を、count の3次元ベクトル要素values に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様な変数配列を、valuescount 4次元ベクトル要素に設定します。

setAttributeValue()も参照

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

現在のコンテキストのlocation にある一様変数配列を、valuescount 要素に設定する。 各要素はtupleSize 成分を持つ。tupleSize は 1, 2, 3, または 4 でなければならない。

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列をvaluescount 要素に設定します。

setAttributeValue()も参照

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

これはオーバーロードされた関数です。

現在のコンテキストでname と呼ばれる一様変数配列をvaluescount 要素に設定します。 このオーバーロードは、サンプラー値の配列を設定するときに使用する必要があります。

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 2x2 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 2x3 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 2x4 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 3x2 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 3x3 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 3x4 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 4x2 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 4x3 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 4x4 行列要素に設定します.

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列をcount の2次元ベクトル要素values に設定します。

setAttributeValue()も参照

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列をcount の3次元ベクトル要素values に設定します。

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列をcount の4次元ベクトル要素values に設定します。

setAttributeValue()も参照してください

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

これはオーバーロードされた関数である。

現在のコンテキストでname と呼ばれる一様変数配列をvaluescount 要素に設定する。 各要素はtupleSize 成分を持つ。tupleSize は 1, 2, 3, または 4 でなければならない。

setAttributeValue()も参照

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

addShader() を使用してこのシェーダープログラムに追加されたすべてのシェーダのリストを返します。

addShader() およびremoveShader()も参照して ください。

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

このシェーダプログラムのパラメータリスト内の一様変数name の位置を返します。name がこのシェーダプログラムにとって有効な一様変数でない場合は -1 を返します。

attributeLocation()も参照してください

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

これはオーバーロードされた関数です。

このシェーダプログラムのパラメータリスト内の一様変数name の位置を返します。name がこのシェーダプログラムの有効な一様変数でない場合は -1 を返します。

attributeLocation()も参照してください

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

これはオーバーロードされた関数です。

このシェーダプログラムのパラメータリスト内の一様変数name の位置を返します。name がこのシェーダプログラムの有効な一様変数でない場合は -1 を返します。

attributeLocation()も参照してください

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.