QShaderProgramBuilder Class

class Qt3DRender::QShaderProgramBuilder

読み込んだグラフからシェーダープログラムの内容を生成します。詳細...

Header: #include <QShaderProgramBuilder>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
In QML: ShaderProgramBuilder
Inherits: Qt3DCore::QNode
Status: Deprecated

プロパティ

パブリック関数

QByteArray computeShaderCode() const
QUrl computeShaderGraph() const
QStringList enabledLayers() const
QByteArray fragmentShaderCode() const
QUrl fragmentShaderGraph() const
QByteArray geometryShaderCode() const
QUrl geometryShaderGraph() const
Qt3DRender::QShaderProgram *shaderProgram() const
QByteArray tessellationControlShaderCode() const
QUrl tessellationControlShaderGraph() const
QByteArray tessellationEvaluationShaderCode() const
QUrl tessellationEvaluationShaderGraph() const
QByteArray vertexShaderCode() const
QUrl vertexShaderGraph() const

パブリックスロット

void setComputeShaderGraph(const QUrl &computeShaderGraph)
void setEnabledLayers(const QStringList &layers)
void setFragmentShaderGraph(const QUrl &fragmentShaderGraph)
void setGeometryShaderGraph(const QUrl &geometryShaderGraph)
void setShaderProgram(Qt3DRender::QShaderProgram *program)
void setTessellationControlShaderGraph(const QUrl &tessellationControlShaderGraph)
void setTessellationEvaluationShaderGraph(const QUrl &tessellationEvaluationShaderGraph)
void setVertexShaderGraph(const QUrl &vertexShaderGraph)

シグナル

void computeShaderCodeChanged(const QByteArray &computeShaderCode)
void computeShaderGraphChanged(const QUrl &computeShaderGraph)
void enabledLayersChanged(const QStringList &layers)
void fragmentShaderCodeChanged(const QByteArray &fragmentShaderCode)
void fragmentShaderGraphChanged(const QUrl &fragmentShaderGraph)
void geometryShaderCodeChanged(const QByteArray &geometryShaderCode)
void geometryShaderGraphChanged(const QUrl &geometryShaderGraph)
void shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)
void tessellationControlShaderCodeChanged(const QByteArray &tessellationControlShaderCode)
void tessellationControlShaderGraphChanged(const QUrl &tessellationControlShaderGraph)
void tessellationEvaluationShaderCodeChanged(const QByteArray &tessellationEvaluationShaderCode)
void tessellationEvaluationShaderGraphChanged(const QUrl &tessellationEvaluationShaderGraph)
void vertexShaderCodeChanged(const QByteArray &vertexShaderCode)
void vertexShaderGraphChanged(const QUrl &vertexShaderGraph)

詳細説明

シェーダープログラムビルダは、シェーダコードを生成するために使用される複数の異なるシェーダグラフから構成される。

生成されたシェーダーコードのキャッシュが維持されます。生成されたシェーダーは、デフォルトでQStandardPaths::writableLocation(QStandardPaths::TempLocation)) に保存されます。このパスは、環境変数 QT3D_WRITABLE_CACHE_PATH を有効な書き込み可能パスに設定することで上書きできます。

環境変数 QT3D_DISABLE_SHADER_CACHE を設定することで、キャッシュの使用を無効にできます。

ほとんどの場合、グラフに加えられた変更は Qt 3D によって検出され、新しいキャッシュエントリが生成されます。これが起こらないケースとして、グラフに含まれるコードスニペットが変更された場合があります。これを回避するには、キャッシュディレクトリをクリアするか、環境変数 QT3D_REBUILD_SHADER_CACHE を設定することで、強制的にシェーダーコードを生成し直すことができます。

プロパティのドキュメント

[read-only] computeShaderCode : const QByteArray

生成されたコンピュートシェーダーコードを保持します。

アクセス関数:

QByteArray computeShaderCode() const

通知シグナル:

void computeShaderCodeChanged(const QByteArray &computeShaderCode)

computeShaderGraph : QUrl

このシェーダープログラムビルダが使用するコンピュートシェーダグラフへの URL を保持します。

アクセス関数:

QUrl computeShaderGraph() const
void setComputeShaderGraph(const QUrl &computeShaderGraph)

通知シグナル

void computeShaderGraphChanged(const QUrl &computeShaderGraph)

enabledLayers : QStringList

コード生成中にこのビルダーがシェーダー グラフ上でアクティブにするレイヤーのリストを保持します。

関数にアクセスします:

QStringList enabledLayers() const
void setEnabledLayers(const QStringList &layers)

通知シグナル:

void enabledLayersChanged(const QStringList &layers)

[read-only] fragmentShaderCode : const QByteArray

フラグメントシェーダーの生成コードを保持します。

関数にアクセスします:

QByteArray fragmentShaderCode() const

通知シグナル:

void fragmentShaderCodeChanged(const QByteArray &fragmentShaderCode)

fragmentShaderGraph : QUrl

このシェーダープログラムビルダが使用するフラグメントシェーダグラフの URL を保持します。

アクセス関数:

QUrl fragmentShaderGraph() const
void setFragmentShaderGraph(const QUrl &fragmentShaderGraph)

通知シグナル

void fragmentShaderGraphChanged(const QUrl &fragmentShaderGraph)

[read-only] geometryShaderCode : const QByteArray

生成ジオメトリシェーダコードを保持します。

関数にアクセスします:

QByteArray geometryShaderCode() const

ノーティファイアシグナル:

void geometryShaderCodeChanged(const QByteArray &geometryShaderCode)

geometryShaderGraph : QUrl

このシェーダープログラムビルダが使用するジオメトリシェーダグラフの URL を保持します。

アクセス関数:

QUrl geometryShaderGraph() const
void setGeometryShaderGraph(const QUrl &geometryShaderGraph)

通知シグナル

void geometryShaderGraphChanged(const QUrl &geometryShaderGraph)

shaderProgram : Qt3DRender::QShaderProgram*

このビルダーがコードを生成するシェーダープログラムを保持する。

関数にアクセスします:

Qt3DRender::QShaderProgram *shaderProgram() const
void setShaderProgram(Qt3DRender::QShaderProgram *program)

通知シグナル

void shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)

[read-only] tessellationControlShaderCode : const QByteArray

生成テッセレーションコントロールシェーダーコードを保持します。

アクセス関数:

QByteArray tessellationControlShaderCode() const

通知シグナル:

void tessellationControlShaderCodeChanged(const QByteArray &tessellationControlShaderCode)

tessellationControlShaderGraph : QUrl

このシェーダプログラムビルダが使用するテッセレーションコントロールシェーダグラフのURLを保持します。

アクセス関数:

QUrl tessellationControlShaderGraph() const
void setTessellationControlShaderGraph(const QUrl &tessellationControlShaderGraph)

通知シグナル

void tessellationControlShaderGraphChanged(const QUrl &tessellationControlShaderGraph)

[read-only] tessellationEvaluationShaderCode : const QByteArray

生成テッセレーション評価シェーダーコードを保持します。

アクセス関数:

QByteArray tessellationEvaluationShaderCode() const

ノーティファイア・シグナル:

void tessellationEvaluationShaderCodeChanged(const QByteArray &tessellationEvaluationShaderCode)

tessellationEvaluationShaderGraph : QUrl

このシェーダプログラムビルダが使用するテッセレーション評価シェーダグラフのURLを保持します。

アクセス関数:

QUrl tessellationEvaluationShaderGraph() const
void setTessellationEvaluationShaderGraph(const QUrl &tessellationEvaluationShaderGraph)

通知シグナル

void tessellationEvaluationShaderGraphChanged(const QUrl &tessellationEvaluationShaderGraph)

[read-only] vertexShaderCode : const QByteArray

頂点シェーダーの生成コードを保持します。

関数にアクセスします:

QByteArray vertexShaderCode() const

通知シグナル:

void vertexShaderCodeChanged(const QByteArray &vertexShaderCode)

vertexShaderGraph : QUrl

このシェーダプログラムビルダが使用する頂点シェーダグラフの URL を保持します。

アクセス機能

QUrl vertexShaderGraph() const
void setVertexShaderGraph(const QUrl &vertexShaderGraph)

通知シグナル

void vertexShaderGraphChanged(const QUrl &vertexShaderGraph)

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