Auf dieser Seite

Qt3DRender::QShaderProgramBuilder Class

class Qt3DRender::QShaderProgramBuilder

Erzeugt aus geladenen Graphen den Inhalt eines Shader-Programms. Mehr...

Header: #include <qshaderprogrambuilder.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
In QML: ShaderProgramBuilder
Erbt von: Qt3DCore::QNode
Status: Veraltet

Diese Klasse ist veraltet. Wir raten dringend davon ab, sie in neuem Code zu verwenden.

Eigenschaften

Öffentliche Funktionen

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

Öffentliche Slots

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)

Signale

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)

Ausführliche Beschreibung

Ein Shader-Programm-Generator besteht aus mehreren verschiedenen Shader-Graphen, die zur Erzeugung von Shader-Code verwendet werden.

Es wird ein Cache mit generiertem Shader-Code verwaltet. Generierte Shader werden standardmäßig unter „ QStandardPaths::writableLocation “ (QStandardPaths::TempLocation) gespeichert. Dieser Pfad kann überschrieben werden, indem die Umgebungsvariable QT3D_WRITABLE_CACHE_PATH auf einen gültigen, beschreibbaren Pfad gesetzt wird.

Die Verwendung des Caches kann durch Setzen der Umgebungsvariable QT3D_DISABLE_SHADER_CACHE deaktiviert werden.

In den meisten Fällen werden Änderungen an einem Graphen von „ Qt 3D “ erkannt und ein neuer Cache-Eintrag generiert. Ein Fall, in dem dies nicht geschieht, ist, wenn Code-Schnipsel, die von einem Graphen eingebunden werden, geändert werden. Um dies zu umgehen, kann das Leeren des Cache-Verzeichnisses oder das Setzen der Umgebungsvariable QT3D_REBUILD_SHADER_CACHE verwendet werden, um die Neugenerierung des Shader-Codes zu erzwingen.

Dokumentation zu den Eigenschaften

[read-only] computeShaderCode : QByteArray

Enthält den generierten Compute-Shader-Code.

Zugriffsfunktionen:

QByteArray computeShaderCode() const

Notifier-Signal:

void computeShaderCodeChanged(const QByteArray &computeShaderCode)

computeShaderGraph : QUrl

Enthält die URL zum Compute-Shader-Graph, der von diesem Shader-Programmier-Generator verwendet wird.

Zugriffsfunktionen:

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

Notifier-Signal:

void computeShaderGraphChanged(const QUrl &computeShaderGraph)

enabledLayers : QStringList

Enthält die Liste der Ebenen, die dieser Builder bei der Codegenerierung in den Shader-Graphen aktivieren wird.

Zugriffsfunktionen:

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

Notifier-Signal:

void enabledLayersChanged(const QStringList &layers)

[read-only] fragmentShaderCode : QByteArray

Enthält den generierten Fragment-Shader-Code.

Zugriffsfunktionen:

QByteArray fragmentShaderCode() const

Notifier-Signal:

void fragmentShaderCodeChanged(const QByteArray &fragmentShaderCode)

fragmentShaderGraph : QUrl

Enthält die URL zum Fragment-Shader-Graph, der von diesem Shader-Programmier-Tool verwendet wird.

Zugriffsfunktionen:

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

Notifier-Signal:

void fragmentShaderGraphChanged(const QUrl &fragmentShaderGraph)

[read-only] geometryShaderCode : QByteArray

Enthält den generierten Geometrie-Shader-Code.

Zugriffsfunktionen:

QByteArray geometryShaderCode() const

Notifier-Signal:

void geometryShaderCodeChanged(const QByteArray &geometryShaderCode)

geometryShaderGraph : QUrl

Enthält die URL zum Geometrie-Shader-Graphen, der von diesem Shader-Programmierwerkzeug verwendet wird.

Zugriffsfunktionen:

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

Notifier-Signal:

void geometryShaderGraphChanged(const QUrl &geometryShaderGraph)

shaderProgram : Qt3DRender::QShaderProgram*

Enthält das Shader-Programm, auf dessen Grundlage dieser Builder Code generiert.

Zugriffsfunktionen:

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

Notifier-Signal:

void shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)

[read-only] tessellationControlShaderCode : QByteArray

Enthält den Shader-Code zur Steuerung der Tessellationsgenerierung.

Zugriffsfunktionen:

QByteArray tessellationControlShaderCode() const

Notifier-Signal:

void tessellationControlShaderCodeChanged(const QByteArray &tessellationControlShaderCode)

tessellationControlShaderGraph : QUrl

Enthält die URL zum Shader-Graphen für die Tesselierung, der von diesem Shader-Programmierwerkzeug verwendet wird.

Zugriffsfunktionen:

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

Notifier-Signal:

void tessellationControlShaderGraphChanged(const QUrl &tessellationControlShaderGraph)

[read-only] tessellationEvaluationShaderCode : QByteArray

Enthält den Shader-Code zur Berechnung der Tessellation.

Zugriffsfunktionen:

QByteArray tessellationEvaluationShaderCode() const

Notifier-Signal:

void tessellationEvaluationShaderCodeChanged(const QByteArray &tessellationEvaluationShaderCode)

tessellationEvaluationShaderGraph : QUrl

Enthält die URL zum Shadergraphen für die Tesselationsauswertung, der von diesem Shader-Programmierwerkzeug verwendet wird.

Zugriffsfunktionen:

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

Notifier-Signal:

void tessellationEvaluationShaderGraphChanged(const QUrl &tessellationEvaluationShaderGraph)

[read-only] vertexShaderCode : QByteArray

Enthält den generierten Vertex-Shader-Code.

Zugriffsfunktionen:

QByteArray vertexShaderCode() const

Notifier-Signal:

void vertexShaderCodeChanged(const QByteArray &vertexShaderCode)

vertexShaderGraph : QUrl

Enthält die URL zum Vertex-Shader-Graph, der von diesem Shader-Programmier-Generator verwendet wird.

Zugriffsfunktionen:

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

Notifier-Signal:

void vertexShaderGraphChanged(const QUrl &vertexShaderGraph)

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