QOpenGLShader Class

QOpenGLShaderクラスは、OpenGLシェーダーをコンパイルできるようにします。詳細...

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

パブリックタイプ

flags ShaderType
enum ShaderTypeBit { Vertex, Fragment, Geometry, TessellationControl, TessellationEvaluation, Compute }

パブリック関数

QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = nullptr)
virtual ~QOpenGLShader()
bool compileSourceCode(const char *source)
bool compileSourceCode(const QByteArray &source)
bool compileSourceCode(const QString &source)
bool compileSourceFile(const QString &fileName)
bool isCompiled() const
QString log() const
GLuint shaderId() const
QOpenGLShader::ShaderType shaderType() const
QByteArray sourceCode() const

静的パブリック・メンバー

bool hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = nullptr)

詳細説明

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

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

QOpenGLShaderProgramも参照してください

メンバ型ドキュメント

enum QOpenGLShader::ShaderTypeBit
flags QOpenGLShader::ShaderType

この enum は、作成されるQOpenGLShader のタイプを指定します。

定数説明
QOpenGLShader::Vertex0x0001OpenGL Shading Language (GLSL) で書かれた頂点シェーダ。
QOpenGLShader::Fragment0x0002OpenGL Shading Language(GLSL)で書かれたフラグメントシェーダ。
QOpenGLShader::Geometry0x0004OpenGL Shading Language(GLSL)で書かれたジオメトリ・シェーダ(OpenGL >= 3.2またはOpenGL ES >= 3.2が必要)。
QOpenGLShader::TessellationControl0x0008OpenGLシェーディング言語(GLSL)で書かれたテッセレーション・コントロール・シェーダー(OpenGL >= 4.0またはOpenGL ES >= 3.2が必要)。
QOpenGLShader::TessellationEvaluation0x0010OpenGLシェーディング言語(GLSL)で書かれたテッセレーション評価シェーダー(OpenGL >= 4.0またはOpenGL ES >= 3.2が必要)。
QOpenGLShader::Compute0x0020OpenGLシェーディング言語(GLSL)で書かれたコンピュート・シェーダー(OpenGL >= 4.3またはOpenGL ES >= 3.1が必要)。

ShaderType型はQFlags<ShaderTypeBit>のtypedefです。ShaderTypeBitの値のORの組み合わせを格納する。

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

[explicit] QOpenGLShader::QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = nullptr)

指定されたtype の新しい QOpenGLShader オブジェクトを構築し、parent にアタッチします。シェーダープログラムがサポートされていない場合、QOpenGLShaderProgram::hasOpenGLShaderPrograms() は false を返します。

このコンストラクタの後には通常、compileSourceCode() またはcompileSourceFile() を呼び出します。

シェーダは現在のQOpenGLContext に関連付けられます。

compileSourceCode() およびcompileSourceFile()も参照してください

[virtual noexcept] QOpenGLShader::~QOpenGLShader()

このシェーダを削除します。シェーダがQOpenGLShaderProgram オブジェクトにアタッチされている場合、実際のシェーダはQOpenGLShaderProgram が破棄されるまで残ります。

bool QOpenGLShader::compileSourceCode(const char *source)

このシェーダのsource コードを設定し、コンパイルします。ソースのコンパイルに成功した場合はtrue を返し、失敗した場合は false を返します。

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

bool QOpenGLShader::compileSourceCode(const QByteArray &source)

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

このシェーダのsource コードを設定し、コンパイルします。ソースが正常にコンパイルされた場合はtrue を返し、そうでない場合は false を返します。

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

bool QOpenGLShader::compileSourceCode(const QString &source)

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

このシェーダのsource コードを設定し、コンパイルします。ソースが正常にコンパイルされた場合はtrue を返し、そうでない場合は false を返します。

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

bool QOpenGLShader::compileSourceFile(const QString &fileName)

このシェーダーのソースコードをfileName の内容に設定し、コンパイルします。ファイルを開いてソースをコンパイルできた場合はtrue を返し、そうでない場合は false を返します。

compileSourceCode()も参照

[static] bool QOpenGLShader::hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = nullptr)

type タイプのシェーダープログラムがこのシステムでサポートされている場合はtrue を返し、そうでない場合は false を返します。

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

bool QOpenGLShader::isCompiled() const

このシェーダがコンパイルされている場合はtrue を返し、そうでない場合は false を返します。

compileSourceCode() およびcompileSourceFile()も参照して ください。

QString QOpenGLShader::log() const

最後のコンパイル時に発生したエラーと警告を返します。

compileSourceCode() およびcompileSourceFile() も参照して ください。

GLuint QOpenGLShader::shaderId() const

このシェーダに関連付けられた OpenGL 識別子を返します。

QOpenGLShaderProgram::programId() も参照して ください。

QOpenGLShader::ShaderType QOpenGLShader::shaderType() const

このシェーダーのタイプを返します。

QByteArray QOpenGLShader::sourceCode() const

このシェーダーのソースコードを返します。

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

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