Qt3DRender::QShaderProgramBuilder Class
class Qt3DRender::QShaderProgramBuilder根据加载的图生成着色器程序内容。更多...
| 标题: | #include <qshaderprogrambuilder.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake: | QT += 3drender |
| 在 QML 中: | ShaderProgramBuilder |
| 继承自: | Qt3DCore::QNode |
| 状态: | 已弃用 |
该类已弃用。我们强烈建议在新代码中不要使用它。
属性
|
|
公共函数
| 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 : 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 : 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 : 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 : 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 : 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 : 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) |
© 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.