QOpenGLShaderProgram Class

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

Header: #include <QOpenGLShaderProgram>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
Inherits: QObject

パブリック関数

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

指定された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)

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

指定された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)

指定された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)

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 シェーディング言語(GLSL)で書かれたシェーダープログラムがこのシステムでサポートされている場合はtrue を返し、そうでない場合は false を返す。

context 、GLSL拡張を解決するために使用される。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 値が 0 の場合は、頂点がvalues に密集していることを示します。

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

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

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

このシェーダ・プログラムのlocation の属性に 3D 頂点の配列values を設定します。stride は頂点間のバイト数を示します。デフォルトのstride 値が 0 の場合は、頂点が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() が呼び出されたときである。そうでない場合は、locationsetAttributeValue() で指定された値が使用される。

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 と呼ばれる一様変数を 3D ベクトル (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 の uniform 変数を 2x4 の行列value にセットします.

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

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

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

現在のコンテキストにおけるlocation の uniform 変数を 3x2 行列value にセットします.

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

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

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

現在のコンテキストにおけるlocation の uniform 変数を, 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 の uniform 変数を,4x2 の行列value にセットします.

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

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

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

現在のコンテキストにおけるlocation の uniform 変数を,4x3 の行列value にセットします.

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

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

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

現在のコンテキストにおけるlocation の uniform 変数を,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 に設定します。

シェーダ内の 4x4 行列としてQTransform の値を設定するには、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 にある一様変数を、 2次元ベクトル (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 2次元ベクトル要素に設定します.

setAttributeValue()も参照

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

現在のコンテキストにおけるlocation の一様変数配列を,valuescount 3次元ベクトル要素に設定する.

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)

tupleSize 現在のコンテキストにおけるlocation の一様変数配列を,valuescount 要素にセットします.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 と呼ばれる一様変数配列を,valuescount 2次元ベクトル要素に設定します.

setAttributeValue()も参照

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

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

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

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

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

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

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

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

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

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

tupleSize 現在のコンテキストでname と呼ばれる一様変数配列を,valuescount 要素にセットします.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()も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。