このページでは

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()
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const char*source)
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const QByteArray&source)
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const QString&source)
bool addCacheableShaderFromSourceFile(QOpenGLShader::ShaderTypetype, const QString&fileName)
bool addShader(QOpenGLShader*shader)
bool addShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const char*source)
bool addShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const QByteArray&source)
bool addShaderFromSourceCode(QOpenGLShader::ShaderTypetype, const QString&source)
bool addShaderFromSourceFile(QOpenGLShader::ShaderTypetype, 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, intlocation)
void bindAttributeLocation(const QByteArray&name, intlocation)
void bindAttributeLocation(const QString&name, intlocation)
bool 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)
bool isLinked() const
仮想 bool 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, GLenumtype, intoffset, inttupleSize, intstride= 0)
void setAttributeBuffer(const char*name, GLenumtype, 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(int位置, GLint値)
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(int位置, const QMatrix4x4&値)
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, GLuintvalue)
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 *> 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には、変数修飾子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);

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

バイナリシェーダーは、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::CacheLocation の下に透過的にキャッシュされます。サポートが利用できない場合、キャッシュ可能な関数のバリエーションを呼び出しても、通常の関数を呼び出すのと同じ結果になります。

注:一部のドライバでは 、拡張機能を公開している場合や OpenGL ES 3.0 を提供している場合でも、利用可能なバイナリ形式が一切存在しないことがあります。この場合、プログラムバイナリのサポートは無効になります。

セキュリティ上の考慮事項

Qt OpenGL Shader Program が使用するすべてのデータは、信頼できるコンテンツであることが想定されています。シェーダーのソースコードは、場合によっては最小限の修正を加えた後、基盤となる OpenGL 実装のコンパイラに渡されますが、Qt の観点からは、このコンパイラはブラックボックスとなります。

警告:アプリケーション開発者は 、addShaderFromSourceFile() などの関数にユーザーが提供したコンテンツを渡す前に、その潜在的な影響を慎重に検討することを推奨します。

QOpenGLShaderも参照してください 。

メンバ関数のドキュメント

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

新しいシェーダープログラムを作成し、それをparent に紐付けます。addShader()が呼び出されるまでは、このプログラムは無効となります。

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

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

[virtual noexcept] 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()を呼び出すことと同じになります。

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()の呼び出しと同等になります。

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

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

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

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

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

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

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()を呼び出すことと同じになります。

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)

指定されたtype のシェーダーとしてsource をコンパイルし、このシェーダープログラムに追加します。コンパイルが成功した場合はtrue を返し、失敗した場合はfalseを返します。コンパイル時のエラーおよび警告は、log()を通じて取得できます。

この関数は、QOpenGLShader のインスタンスを事前に作成することなく、シェーダープログラムに頂点シェーダーやフラグメントシェーダーを素早く追加するための近道として設計されています。

addShader()、addShaderFromSourceFile()、removeShader()、link()、log()、およびremoveAllShaders()も参照してください 。

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

指定されたtype のシェーダーとしてsource をコンパイルし、このシェーダープログラムに追加します。コンパイルが成功した場合はtrue を返し、失敗した場合はfalseを返します。コンパイル時のエラーおよび警告は、log()を通じて取得できます。

この関数は、QOpenGLShader のインスタンスを事前に作成することなく、シェーダープログラムに頂点シェーダーやフラグメントシェーダーを素早く追加するためのショートカットとして設計されています。

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

addShader()、addShaderFromSourceFile()、removeShader()、link()、log()、およびremoveAllShaders()も参照してください 。

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

指定されたtype のシェーダーとしてsource をコンパイルし、このシェーダープログラムに追加します。コンパイルが成功した場合は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 を返します。

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

シェーダプログラムを通常通りに使用する場合、シェーダプログラムの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 テッセレーションシェーダー」を参照してください。

外側テッセレーションレベルを表す浮動小数点数の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)

このシェーダープログラム内で、以前のenableAttributeArray()の呼び出しによって有効化されていた「name 」という頂点配列を無効にします。

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

enableAttributeArray()、setAttributeArray()、setAttributeValue()、およびsetUniformValue()も参照してください 。

void QOpenGLShaderProgram::enableAttributeArray(int location)

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

disableAttributeArray()、setAttributeArray()、setAttributeValue()、およびsetUniformValue()も参照してください 。

void QOpenGLShaderProgram::enableAttributeArray(const char *name)

このシェーダープログラム内で「name 」という名前の頂点配列を有効にし、name 上でsetAttributeArray() によって設定された値が、シェーダープログラムで使用されるようにします。

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

disableAttributeArray()、setAttributeArray()、setAttributeValue()、およびsetUniformValue()も参照してください 。

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

このシステムで OpenGL シェーディング言語 (GLSL) で記述されたシェーダープログラムがサポートされている場合は `true ` を返し、そうでない場合は `false` を返します。

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

bool QOpenGLShaderProgram::isLinked() const

このシェーダープログラムがリンクされている場合は `true ` を返し、そうでない場合は `false` を返します。

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 オブジェクトは、外部で生成されたものである場合、削除されません。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 にある属性に、2次元頂点values の配列を設定します。stride は、頂点間のバイト数を示します。stride のデフォルト値が0の場合、頂点はvalues に高密度に配置されます。

この配列は、location に対してenableAttributeArray()が呼び出されたときに有効になります。それ以外の場合は、setAttributeValue()で指定されたlocation の値が使用されます。

setAttributeValue()、setUniformValue()、enableAttributeArray()、およびdisableAttributeArray()も参照してください 。

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

このシェーダープログラムのlocation にある属性に、3D頂点values の配列を設定します。stride は、頂点間のバイト数を示します。デフォルトのstride 値が0の場合、頂点はvalues に密にパッキングされていることを示します。

この配列は、location に対してenableAttributeArray() が呼び出されたときに有効になります。それ以外の場合、setAttributeValue() で指定されたlocation の値が使用されます。

setAttributeValue()、setUniformValue()、enableAttributeArray()、およびdisableAttributeArray()も参照してください 。

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

このシェーダープログラム内のlocation にある属性に、4Dの頂点values の配列を設定します。stride は、頂点間のバイト数を示します。stride のデフォルト値である0は、頂点がvalues に高密度にパッキングされていることを示します。

この配列は、location に対してenableAttributeArray()が呼び出されたときに有効になります。それ以外の場合は、setAttributeValue()で指定されたlocation の値が使用されます。

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 に高密度にパッキングされていることを示します。

この配列は、location に対してenableAttributeArray()が呼び出されたときに有効になります。それ以外の場合は、setAttributeValue()でlocation として指定された値が使用されます。

setAttributeValue()、setUniformValue()、enableAttributeArray()、およびdisableAttributeArray()も参照してください 。

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

このシェーダープログラムのlocation にある属性に、頂点values の配列を設定します。stride は、頂点間のバイト数を示します。stride のデフォルト値である0は、頂点がvalues に高密度に配置されていることを示します。

type は、values 配列内の要素の型を示します。通常はGL_FLOAT 、GL_UNSIGNED_BYTE などです。tupleSize は、頂点ごとのコンポーネント数を示します:1、2、3、または4です。

この配列は、location に対してenableAttributeArray()が呼び出されたときに有効になります。それ以外の場合は、location に対してsetAttributeValue()で指定された値が使用されます。

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

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

関連項目: setAttributeValue()、setUniformValue()、enableAttributeArray()、disableAttributeArray()、およびsetAttributeBuffer()。

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

このシェーダープログラム内の「name 」という属性に、2次元頂点values の配列を設定します。stride は、頂点間のバイト数を示します。stride のデフォルト値である0は、頂点がvalues に密にパックされていることを示します。

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

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

setAttributeValue()、setUniformValue()、enableAttributeArray()、およびdisableAttributeArray()も参照してください 。

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

このシェーダープログラムの「name 」という属性に、3D頂点values の配列を設定します。stride は、頂点間のバイト数を示します。stride のデフォルト値である0は、頂点がvalues に高密度に配置されていることを示します。

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

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

setAttributeValue()、setUniformValue()、enableAttributeArray()、およびdisableAttributeArray()も参照してください 。

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

このシェーダープログラムの「name 」という属性に、4D頂点values の配列を設定します。stride は、頂点間のバイト数を示します。stride のデフォルト値である0は、頂点がvalues に高密度に配置されていることを示します。

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

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

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 に高密度にパッキングされていることを示します。

この配列は、name に対してenableAttributeArray()が呼び出されたときに有効になります。それ以外の場合は、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 」値が 0 の場合、頂点はvalues に高密度に配置されていることを示します。

type は、values 配列内の要素の型(通常はGL_FLOAT 、GL_UNSIGNED_BYTE など)を示します。tupleSize は、頂点あたりのコンポーネント数(1、2、3、または4)を示します。

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

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

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

setAttributeValue()、setUniformValue()、enableAttributeArray()、disableAttributeArray()、およびsetAttributeBuffer()も参照してください 。

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

このシェーダープログラムのlocation にある属性に対して、現在バインドされている頂点バッファ内の特定のoffset から始まる頂点値の配列を設定します。stride は、頂点間のバイト数を示します。デフォルトのstride 値である0は、値配列内で頂点が密にパッキングされていることを示します。

type は、頂点値配列内の要素の型を示します。通常はGL_FLOAT 、GL_UNSIGNED_BYTE などです。tupleSize は、頂点あたりのコンポーネント数を示します(1、2、3、または4)。

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

注:正規化が 有効になります。これを望まない場合は、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 に対してenableAttributeArray() が呼び出されたときに有効になります。それ以外の場合は、setAttributeValue() でname に指定された値が使用されます。

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

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 の属性を、2次元ベクトル(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 」という属性を、2次元ベクトル(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 」という属性を、4Dベクトル(x 、y 、z 、w )に設定します。

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

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

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

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

levels 引数は、2つのfloatで構成される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つのfloatで構成されるQList である必要があります。すべてのテッセレーションモードにおいて、すべての値が意味を持つわけではありません。要素数が4つ未満のベクトルを指定した場合、残りの要素にはデフォルト値として1が設定されます。

注:これは グローバルな OpenGL 状態を変更するものであり、この `QOpenGLShaderProgram ` インスタンスに固有のものではありません。QOpenGLShaderProgram では自動的に適用されないため、必要に応じてレンダリング関数内でこの関数を呼び出す必要があります。これはあくまで利便性を高めるための関数です。

注:この関数は OpenGL 4.0 以降でのみ利用可能であり、OpenGL ES 3.2 ではサポートされていません。

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

void QOpenGLShaderProgram::setPatchVertexCount(int count)

この関数を使用すると、count に対して、パッチ内の頂点数をOpenGLに指定することができます。パッチとは、その解釈が完全にテッセレーションシェーダステージによって定義される、カスタムOpenGLプリミティブのことです。したがって、この関数の呼び出しが意味を持つのは、テッセレーションステージシェーダを含むQOpenGLShaderProgram を使用する場合に限られます。OpenGLのテッセレーションを使用する場合、glDraw*() 関数でレンダリングできる唯一のプリミティブはGL_PATCHES です。

これは、glPatchParameteri(GL_PATCH_VERTICES, count) を呼び出すことと同等です。

注:これは グローバルな OpenGL 状態を変更するものであり、このQOpenGLShaderProgram インスタンスに固有のものではありません。QOpenGLShaderProgram では自動的に適用されないため、必要に応じてレンダリング関数内でこの関数を呼び出す必要があります。これはあくまで利便性を高めるための関数です。

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

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

現在のコンテキストにおけるlocation のuniform変数を、value に設定します。

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

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

現在のコンテキストにおけるlocation のuniform変数を、value に設定します。

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

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

現在のコンテキスト内のname という名前のユニフォーム変数を、3×4行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat3x4 などの GLSL 型)に対応していません。代わりに、このユニフォームを vec4 の配列として扱います。

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

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

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

現在のコンテキスト内のname という名前のユニフォーム変数を、4×2行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat4x2 などの GLSL 型)に対応していません。代わりに、このユニフォームを vec2 の配列として扱います。

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

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

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

現在のコンテキスト内の「name 」という名前のユニフォーム変数を、4×3の行列 `value` に設定します。

注:この関数は 、最新の OpenGL バージョンに実装されている mat4x3 などの GLSL 型といった、非正方行列のサポートを認識していません。その代わりに、このユニフォームを vec3 の配列として扱います。

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

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

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

現在のコンテキスト内の「name 」というユニフォーム変数を、4×4行列「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 値として指定された3×3変換行列value に設定します。

シェーダー内でQTransform の値を4×4行列として設定するには、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 のユニフォーム変数を、2×2行列value に設定します。行列の要素は、列優先順で指定する必要があります。

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

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

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

現在のコンテキストにおけるlocation のuniform変数を、3×3行列value に設定します。行列の要素は、列優先順で指定する必要があります。

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

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

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

現在のコンテキストにおけるlocation のuniform変数を、4×4行列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 バージョンにおける unsigned int のサポートを考慮していないため、value を GLint として扱い、glUniform1i を呼び出します。

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

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

現在のコンテキスト内のlocation にあるuniform変数を、color の赤、緑、青、およびアルファ成分に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数を、2×2行列value に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数を、2×3行列value に設定します。

注:この関数は 、最新の OpenGL バージョンでサポートされている mat2x3 などの GLSL 型といった、非正方行列のサポートを考慮していません。代わりに、このユニフォームを vec3 の配列として扱います。

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

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

現在のコンテキスト内のlocation にあるuniform変数を、2×4行列value に設定します。

注:この関数は 、最新の OpenGL バージョンでサポートされている非正方行列、つまり mat2x4 などの GLSL 型に対応していません。代わりに、この関数は uniform を vec4 の配列として扱います。

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

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

現在のコンテキスト内のlocation にあるユニフォーム変数を、3×2行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat3x2 などの GLSL 型)に対応していません。代わりに、このユニフォームを vec2 の配列として扱います。

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

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

現在のコンテキストにおけるlocation のuniform変数を、3×3行列value に設定します。

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

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

現在のコンテキスト内のlocation にあるユニフォーム変数を、3×4行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat3x4 などの GLSL 型)に対応していません。代わりに、このユニフォームを vec4 の配列として扱います。

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

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

現在のコンテキスト内のlocation にあるユニフォーム変数を、4×2行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat4x2 などの GLSL 型)に対応していません。代わりに、この関数は uniform を vec2 の配列として扱います。

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

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

現在のコンテキスト内のlocation にあるユニフォーム変数を、4×3行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat4x3 などの GLSL 型)に対応していません。代わりに、このユニフォームを vec3 の配列として扱います。

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

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

現在のコンテキストにおけるlocation のuniform変数を、4×4行列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 にあるuniform変数を、指定されたsize の幅と高さに設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数を、指定されたsize の幅と高さに設定します。

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

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

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

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

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

現在のコンテキストにおけるlocation のuniform変数を、value に設定します。

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

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

現在のコンテキストにおけるlocation のuniform変数を、value に設定します。

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

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

現在のコンテキストにおけるlocation のuniform変数を、value に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数を、2次元ベクトル(x,y )に設定します。

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

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

現在のコンテキストにおけるlocation のユニフォーム変数を、3次元ベクトル(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 バージョンにおける unsigned int のサポートを認識していないため、value を GLint として扱い、glUniform1i を呼び出します。

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

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

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

現在のコンテキストにおいて、name という名前のユニフォーム変数を、2×2 行列value に設定します。行列の要素は、列優先順で指定する必要があります。

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

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

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

現在のコンテキストにある「name 」というユニフォーム変数を、3×3行列「value 」に設定します。行列の要素は、列優先順で指定する必要があります。

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

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

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

現在のコンテキストにあるname という名前のユニフォーム変数を、4×4行列value に設定します。行列の要素は、列優先順で指定する必要があります。

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

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

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

現在のコンテキスト内の「name 」という名前のユニフォーム変数を、color の赤、緑、青、およびアルファ成分に設定します。

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

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

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

現在のコンテキストにおいて、name という名前のユニフォーム変数を、2×2 行列value に設定します。

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

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

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

現在のコンテキスト内のname という名前のユニフォーム変数を、2×3行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat2x3 などの GLSL 型)に対応していません。代わりに、このユニフォームを vec3 の配列として扱います。

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

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

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

現在のコンテキスト内のname という名前のユニフォーム変数を、2×4行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat2x4 などの GLSL 型)に対応していません。代わりに、このユニフォームを vec4 の配列として扱います。

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

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

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

現在のコンテキスト内のname という名前のユニフォーム変数を、3×2行列value に設定します。

注:この関数は、 最新の OpenGL バージョンでサポートされている非正方行列(mat3x2 などの GLSL 型)に対応していません。代わりに、このユニフォームを vec2 の配列として扱います。

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

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

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

現在のコンテキストにおいて、name という名前のユニフォーム変数を、3×3 行列value に設定します。

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

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount 個の要素に設定します。

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

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

現在のコンテキスト内のlocation にあるユニフォーム変数配列を、values のcount 個の要素に設定します。このオーバーロードは、サンプラー値の配列を設定する際に使用してください。

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

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount の2×2行列要素に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount の2×3行列要素に設定します。

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

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

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

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount の3×2行列要素に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount の3×3行列要素に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount の3×4行列要素に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount の4×2行列要素に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount の4×3行列要素に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount の4×4行列要素に設定します。

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

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

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

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

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

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

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount 個の4Dベクトル要素に設定します。

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

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

現在のコンテキスト内のlocation にあるuniform変数配列を、values のcount 個の要素に設定します。各要素はtupleSize の成分を持ちます。tupleSize は1、2、3、または4でなければなりません。

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

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

現在のコンテキストにある「name 」という名前のユニフォーム変数配列を、values のcount 個の要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前のユニフォーム変数配列を、values のcount 個の要素に設定します。このオーバーロードは、サンプラー値の配列を設定する際に使用してください。

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

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

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

現在のコンテキストにある「name 」という名前の一様変数配列を、values のcount の2×2行列の要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前の一様変数配列を、values のcount の2×3行列要素に設定します。

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

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

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

現在のコンテキスト内の「name 」という名前の一様変数配列を、values のcount の2×4行列要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前のユニフォーム変数配列を、values のcount の3×2行列要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前のユニフォーム変数配列を、values のcount の3×3行列の要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前の一様変数配列を、values のcount の3×4行列の要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前の一様変数配列を、values のcount 4×2 行列の要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前の一様変数配列を、values のcount の4×3行列要素に設定します。

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

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

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

現在のコンテキストにある「name 」という一様変数配列を、values のcount 個の4×4行列要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前のユニフォーム変数配列を、values のcount の2次元ベクトル要素に設定します。

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

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

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

現在のコンテキストにある「name 」という名前のユニフォーム変数配列を、values のcount の3Dベクトル要素に設定します。

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

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

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

現在のコンテキスト内の「name 」という名前のユニフォーム変数配列を、values のcount 個の4Dベクトル要素に設定します。

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

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

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

現在のコンテキストにあるname という名前のユニフォーム変数配列を、values のcount 個の要素に設定します。各要素はtupleSize 個の成分を持ちます。tupleSize は1、2、3、または4でなければなりません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

© 2026 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.