QRenderPass 类
class Qt3DRender::QRenderPass封装了渲染过程。 更多...
头文件 | #include <QRenderPass> |
CMake | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake | QT += 3drender |
实例化自 | RenderPass |
继承自 | Qt3DCore::QNode |
属性
- shaderProgram : Qt3DRender::QShaderProgram*
公开函数
QRenderPass(Qt3DCore::QNode *parent = nullptr) | |
void | addFilterKey(Qt3DRender::QFilterKey *filterKey) |
void | addParameter(Qt3DRender::QParameter *parameter) |
void | addRenderState(Qt3DRender::QRenderState *state) |
QList<Qt3DRender::QFilterKey *> | filterKeys() const |
QList<Qt3DRender::QParameter *> | parameters() const |
void | removeFilterKey(Qt3DRender::QFilterKey *filterKey) |
void | removeParameter(Qt3DRender::QParameter *parameter) |
void | removeRenderState(Qt3DRender::QRenderState *state) |
QList<Qt3DRender::QRenderState *> | renderStates() const |
Qt3DRender::QShaderProgram * | shaderProgram() const |
公开槽
void | setShaderProgram(Qt3DRender::QShaderProgram *shaderProgram) |
信号
void | shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram) |
相关非成员
详细说明
Qt3DRender::QRenderPass 指定一个单独的渲染过程 - 着色器程序的执行实例 - 由 Qt3DRender::QTechnique 使用。渲染过程由一个 Qt3DRender::QShaderProgram 和一个 Qt3DRender::QFilterKey 对象列表,一个 Qt3DRender::QRenderState 对象列表和一个 Qt3DRender::QParameter 对象列表组成。
当至少有一个QFilterKey节点被引用且与QRenderPassFilter中的任何QFilterKey节点匹配,或者没有指定任何QFilterKey节点,同时帧图QRenderPassFilter不存在时,QRenderPass将使用给定的QRenderState和QParameter节点执行QShaderProgram。
如果QRenderPass定义了一个QParameter,则如果它出现在任何关联的QTechnique、QEffect、QMaterial、QTechniqueFilter、QRenderPassFilter中的QParameter中,该参数将被覆盖。这仍然可以用来定义合理的默认值。
在渲染时间,对于帧图中的每个叶节点,通过累积帧图分支中定义的所有QRenderStateSet节点的状态,记录一个基线渲染状态。每个QRenderPass可以通过指定自己的QRenderState节点来覆盖这个基线渲染状态。
// Create the render passes QRenderPass *pass = new QRenderPass(); // Create shader program QShaderProgram *glShader = new QShaderProgram(); // Set the shader on the render pass pass->setShaderProgram(glShader); // Create a FilterKey QFilterKey *filterKey = new QFilterKey(); filterKey->setName(QStringLiteral("name")); fitlerKey->setValue(QStringLiteral("zFillPass")); // Add the FilterKey to the pass pass->addFilterKey(filterKey); // Create a QParameter QParameter *colorParameter = new QParameter(QStringLiteral("color"), QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f)); // Add parameter to pass pass->addParameter(colorParameter); // Create a QRenderState QDepthTest *depthTest = new QDepthTest(); // Add the render state to the pass pass->addRenderState(depthTest);
另见:QRenderPassFilter、QFilterKey、QParameter、QRenderState、QEffect、以及QTechnique。
属性文档
shaderProgram : Qt3DRender::QShaderProgram*
指定要为此渲染传递使用的着色器程序。
访问函数
Qt3DRender::QShaderProgram * | shaderProgram() const |
void | setShaderProgram(Qt3DRender::QShaderProgram *shaderProgram) |
通知器信号
void | shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram) |
成员函数文档
[显式]
QRenderPass::QRenderPass(Qt3DCore::QNode *parent = nullptr)
使用指定的parent构建一个新的QRenderPass。
void QRenderPass::addFilterKey(Qt3DRender::QFilterKey *filterKey)
将filterKey添加到Qt3DRender::QRenderPass的本地过滤键中。
void QRenderPass::addParameter(Qt3DRender::QParameter *parameter)
将parameter添加到渲染传递的参数中。
void QRenderPass::addRenderState(Qt3DRender::QRenderState *state)
向渲染传递中添加一个state。这意味着当在渲染时间执行传递时,全局设置的渲染状态将由Qt3DRender::QRenderPass本地定义的状态修改。
注意:一个传递中未定义Qt3DRender::QRenderState将导致传递在给定帧图分支执行路径上使用全局设置的渲染状态。
QList<Qt3DRender::QFilterKey *> QRenderPass::filterKeys() const
返回组成 Qt3DRender::QFilterKey 筛选键的 Qt3DRender::QRenderPass 筛选键对象的列表。
QList<Qt3DRender::QParameter *> QRenderPass::parameters() const
返回渲染通道当前参数的向量。
void QRenderPass::removeFilterKey(Qt3DRender::QFilterKey *filterKey)
从 Qt3DRender::QRenderPass 的本地筛选键中移除 filterKey。
void QRenderPass::removeParameter(Qt3DRender::QParameter *parameter)
从渲染通道的参数中移除 parameter。
void QRenderPass::removeRenderState(Qt3DRender::QRenderState *state)
从 Qt3DRender::QRenderPass 的本地渲染状态中移除 state。
QList<Qt3DRender::QRenderState *> QRenderPass::renderStates() const
返回组成 Qt3DRender::QRenderState 状态的 Qt3DRender::QRenderState 状态对象的列表。
© 2024 The Qt Company Ltd. 本文档中的文档贡献者各自拥有版权。本文件中的文档基于自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 和相应的徽标是芬兰及全球其他国家的 The Qt Company Ltd. 的 商标。所有其他商标均为其各自所有者的财产。