QRhiGraphicsPipeline Class
图形流水线状态资源。更多
头文件: | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
自 | Qt 6.6 |
继承: | QRhiResource |
公共类型
(since 6.6) struct | StencilOpState |
(since 6.6) struct | TargetBlend |
enum | BlendFactor { Zero, One, SrcColor, OneMinusSrcColor, DstColor, …, OneMinusSrc1Alpha } |
enum | BlendOp { Add, Subtract, ReverseSubtract, Min, Max } |
flags | ColorMask |
enum | ColorMaskComponent { R, G, B, A } |
enum | CompareOp { Never, Less, Equal, LessOrEqual, Greater, …, Always } |
enum | CullMode { None, Front, Back } |
enum | Flag { UsesBlendConstants, UsesStencilRef, UsesScissor, CompileShadersWithDebugInfo, UsesShadingRate } |
flags | Flags |
enum | FrontFace { CCW, CW } |
enum | PolygonMode { Fill, Line } |
enum | StencilOp { StencilZero, Keep, Replace, IncrementAndClamp, DecrementAndClamp, …, DecrementAndWrap } |
enum | Topology { Triangles, TriangleStrip, TriangleFan, Lines, LineStrip, …, Patches } |
公共函数
const QRhiShaderStage * | cbeginShaderStages() const |
const QRhiGraphicsPipeline::TargetBlend * | cbeginTargetBlends() const |
const QRhiShaderStage * | cendShaderStages() const |
const QRhiGraphicsPipeline::TargetBlend * | cendTargetBlends() const |
virtual bool | create() = 0 |
QRhiGraphicsPipeline::CullMode | cullMode() const |
int | depthBias() const |
QRhiGraphicsPipeline::CompareOp | depthOp() const |
QRhiGraphicsPipeline::Flags | flags() const |
QRhiGraphicsPipeline::FrontFace | frontFace() const |
bool | hasDepthTest() const |
bool | hasDepthWrite() const |
bool | hasStencilTest() const |
float | lineWidth() const |
(since 6.7) int | multiViewCount() const |
int | patchControlPointCount() const |
QRhiGraphicsPipeline::PolygonMode | polygonMode() const |
QRhiRenderPassDescriptor * | renderPassDescriptor() const |
int | sampleCount() const |
void | setCullMode(QRhiGraphicsPipeline::CullMode mode) |
void | setDepthBias(int bias) |
void | setDepthOp(QRhiGraphicsPipeline::CompareOp op) |
void | setDepthTest(bool enable) |
void | setDepthWrite(bool enable) |
void | setFlags(QRhiGraphicsPipeline::Flags f) |
void | setFrontFace(QRhiGraphicsPipeline::FrontFace f) |
void | setLineWidth(float width) |
(since 6.7) void | setMultiViewCount(int count) |
void | setPatchControlPointCount(int count) |
void | setPolygonMode(QRhiGraphicsPipeline::PolygonMode mode) |
void | setRenderPassDescriptor(QRhiRenderPassDescriptor *desc) |
void | setSampleCount(int s) |
void | setShaderResourceBindings(QRhiShaderResourceBindings *srb) |
void | setShaderStages(std::initializer_list<QRhiShaderStage> list) |
void | setShaderStages(InputIterator first, InputIterator last) |
void | setSlopeScaledDepthBias(float bias) |
void | setStencilBack(const QRhiGraphicsPipeline::StencilOpState &state) |
void | setStencilFront(const QRhiGraphicsPipeline::StencilOpState &state) |
void | setStencilReadMask(quint32 mask) |
void | setStencilTest(bool enable) |
void | setStencilWriteMask(quint32 mask) |
void | setTargetBlends(std::initializer_list<QRhiGraphicsPipeline::TargetBlend> list) |
void | setTargetBlends(InputIterator first, InputIterator last) |
void | setTopology(QRhiGraphicsPipeline::Topology t) |
void | setVertexInputLayout(const QRhiVertexInputLayout &layout) |
QRhiShaderResourceBindings * | shaderResourceBindings() const |
const QRhiShaderStage * | shaderStageAt(qsizetype index) const |
qsizetype | shaderStageCount() const |
float | slopeScaledDepthBias() const |
QRhiGraphicsPipeline::StencilOpState | stencilBack() const |
QRhiGraphicsPipeline::StencilOpState | stencilFront() const |
quint32 | stencilReadMask() const |
quint32 | stencilWriteMask() const |
const QRhiGraphicsPipeline::TargetBlend * | targetBlendAt(qsizetype index) const |
qsizetype | targetBlendCount() const |
QRhiGraphicsPipeline::Topology | topology() const |
QRhiVertexInputLayout | vertexInputLayout() const |
重新实现的公共函数
virtual QRhiResource::Type | resourceType() const override |
详细说明
代表图形流水线。在底层本地图形 API 中,管道的具体映射关系各不相同。在有流水线对象概念的地方,例如 Vulkan,QRhi 后台会在调用create() 时创建这样一个对象。在其他情况下,例如 OpenGL,QRhiGraphicsPipeline 可能只是收集各种状态,而create() 的主要任务是设置相应的着色器程序,但会推迟到稍后再查看任何请求的状态。
与所有QRhiResource 子类一样,两阶段初始化模式也适用:通过设置器设置任何值(例如setDepthTest() )只有在调用create() 后才有效。通过create() 初始化 QRhiGraphicsPipeline 后,应避免更改任何值。要更改某些状态,可设置新值并再次调用create() 。不过,这将有效释放所有底层本地资源并创建新资源。因此,这可能是一个繁重而昂贵的操作。因此,最好使用不同的状态创建多个管道,并在记录渲染过程时switch between them 。
注意: 必须设置着色器阶段。必须至少有一个阶段,而且必须有一个顶点阶段。
注意: 必须设置着色器资源绑定。在调用create() 时,被引用的QRhiShaderResourceBindings 必须已经调用过create() 。与没有绑定的QRhiShaderResourceBindings 关联也是有效的,只要任何阶段的着色器都不需要任何资源。使用未指定任何实际资源的QRhiShaderResourceBindings 对象(即绑定点的缓冲区、纹理等设置为nullptr
)也是有效的,只要在记录渲染传递时,通过setShaderResources() 设置layout-compatible QRhiShaderResourceBindings ,为所有绑定指定资源即可。
注意: 必须设置呈现传递描述符。要获得可传递给setRenderPassDescriptor() 的QRhiRenderPassDescriptor ,请使用QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor() 或QRhiSwapChain::newCompatibleRenderPassDescriptor() 。
注: 必须设置顶点输入布局。
注: sampleCount() 的默认值为 1,且必须与渲染目标的颜色和深度模板附件的样本数相匹配。
注: 深度测试、深度写入和模版测试默认为禁用。面剔除模式默认为不剔除。
注: stencilReadMask() 和stencilWriteMask() 适用于两个面。默认值均为 0xFF。
使用示例
图形管道的所有设置都有默认值,这些默认值可能适用于许多应用程序。因此,创建图形流水线的最小示例如下。假设顶点着色器在输入位置 0 处接收单个vec3 position
输入。利用QRhiShaderResourceBindings 和QRhiRenderPassDescriptor 对象,再加上用于顶点和片段阶段的QShader 集合,可以创建如下管道:
QRhiShaderResourceBindings *srb; QRhiRenderPassDescriptor *rpDesc; QShader vs, fs; // ... QRhiVertexInputLayout inputLayout; inputLayout.setBindings({ { 3 * sizeof(float) } }); inputLayout.setAttributes({ { 0, 0, QRhiVertexInputAttribute::Float3, 0 } }); QRhiGraphicsPipeline *ps = rhi->newGraphicsPipeline(); ps->setShaderStages({ { QRhiShaderStage::Vertex, vs }, { QRhiShaderStage::Fragment, fs } }); ps->setVertexInputLayout(inputLayout); ps->setShaderResourceBindings(srb); ps->setRenderPassDescriptor(rpDesc); if (!ps->create()) { error(); }
上述代码创建的流水线对象在许多设置和状态上都使用了默认值。例如,它将使用Triangles 拓扑,不使用背面剔除,禁用混合,但启用所有四个通道的颜色写入,禁用深度测试/写入,禁用模版操作。
注: 这是一个 RHI API,兼容性保证有限,详情请参见QRhi 。
另请参阅 QRhiCommandBuffer 和QRhi 。
成员类型文档
enum QRhiGraphicsPipeline::BlendFactor
指定混合因子
常数 | 值 |
---|---|
QRhiGraphicsPipeline::Zero | 0 |
QRhiGraphicsPipeline::One | 1 |
QRhiGraphicsPipeline::SrcColor | 2 |
QRhiGraphicsPipeline::OneMinusSrcColor | 3 |
QRhiGraphicsPipeline::DstColor | 4 |
QRhiGraphicsPipeline::OneMinusDstColor | 5 |
QRhiGraphicsPipeline::SrcAlpha | 6 |
QRhiGraphicsPipeline::OneMinusSrcAlpha | 7 |
QRhiGraphicsPipeline::DstAlpha | 8 |
QRhiGraphicsPipeline::OneMinusDstAlpha | 9 |
QRhiGraphicsPipeline::ConstantColor | 10 |
QRhiGraphicsPipeline::OneMinusConstantColor | 11 |
QRhiGraphicsPipeline::ConstantAlpha | 12 |
QRhiGraphicsPipeline::OneMinusConstantAlpha | 13 |
QRhiGraphicsPipeline::SrcAlphaSaturate | 14 |
QRhiGraphicsPipeline::Src1Color | 15 |
QRhiGraphicsPipeline::OneMinusSrc1Color | 16 |
QRhiGraphicsPipeline::Src1Alpha | 17 |
QRhiGraphicsPipeline::OneMinusSrc1Alpha | 18 |
enum QRhiGraphicsPipeline::BlendOp
指定混合操作
常数 | 值 |
---|---|
QRhiGraphicsPipeline::Add | 0 |
QRhiGraphicsPipeline::Subtract | 1 |
QRhiGraphicsPipeline::ReverseSubtract | 2 |
QRhiGraphicsPipeline::Min | 3 |
QRhiGraphicsPipeline::Max | 4 |
枚举 QRhiGraphicsPipeline::ColorMaskComponent
标志 QRhiGraphicsPipeline::ColorMask
用于指定颜色写入掩码的标志值
常量 | 值 |
---|---|
QRhiGraphicsPipeline::R | 1 << 0 |
QRhiGraphicsPipeline::G | 1 << 1 |
QRhiGraphicsPipeline::B | 1 << 2 |
QRhiGraphicsPipeline::A | 1 << 3 |
ColorMask 类型是QFlags<ColorMaskComponent> 的类型定义。它存储了 ColorMaskComponent 值的 OR 组合。
enum QRhiGraphicsPipeline::CompareOp
指定深度或模版比较函数
常数 | 值 | 说明 |
---|---|---|
QRhiGraphicsPipeline::Never | 0 | |
QRhiGraphicsPipeline::Less | 1 | (深度比较默认值) |
QRhiGraphicsPipeline::Equal | 2 | |
QRhiGraphicsPipeline::LessOrEqual | 3 | |
QRhiGraphicsPipeline::Greater | 4 | |
QRhiGraphicsPipeline::NotEqual | 5 | |
QRhiGraphicsPipeline::GreaterOrEqual | 6 | |
QRhiGraphicsPipeline::Always | 7 | (模版的默认值) |
enum QRhiGraphicsPipeline::CullMode
指定剔除模式
常数 | 值 | 说明 |
---|---|---|
QRhiGraphicsPipeline::None | 0 | 无剔除(默认) |
QRhiGraphicsPipeline::Front | 1 | 剔除正面 |
QRhiGraphicsPipeline::Back | 2 | 剔除背面 |
枚举 QRhiGraphicsPipeline::Flag
flags QRhiGraphicsPipeline::Flags
用于描述流水线动态状态和其他选项的标志值。视口始终是动态的。
常量 | 值 | 说明 |
---|---|---|
QRhiGraphicsPipeline::UsesBlendConstants | 1 << 0 | 表示将通过QRhiCommandBuffer::setBlendConstants() 设置混合色常量 |
QRhiGraphicsPipeline::UsesStencilRef | 1 << 1 | 表示将通过QRhiCommandBuffer::setStencilRef() 设置模板参考值 |
QRhiGraphicsPipeline::UsesScissor | 1 << 2 | 表示将通过QRhiCommandBuffer::setScissor() 设置剪刀矩形 |
QRhiGraphicsPipeline::CompileShadersWithDebugInfo | 1 << 3 | 要求编译着色器时启用调试信息。这只有在涉及从源代码编译运行时着色器时才有意义,而且只有在底层基础架构支持时才有意义。举个具体例子,这与 Vulkan 和 SPIR-V 无关,因为 GLSL 到 SPIR-V 的编译不是在运行时进行的。另一方面,考虑到 Direct3D 和 HLSL 有多种选择:当QShader 软件包附带预编译字节码(DXBC )时,调试信息将通过生成.qsb 文件的工具请求,这与 Vulkan 和 SPIR-V 的情况类似。不过,如果在预生成或运行时生成的QShader 包中有 HLSL 源代码,则编译的第一阶段(将 HLSL 源代码转换为中间格式)也会在运行时进行,并将此标记考虑在内。调试信息与 RenderDoc 等工具尤其相关,因为它允许在调查流水线和执行顶点或片段 Shader 调试时看到原始源代码。 |
QRhiGraphicsPipeline::UsesShadingRate | 1 << 4 | 表示将通过QRhiCommandBuffer::setShadingRate() 设置每次绘制(每条流水线)的着色率值。如果不指定此标志,而仍然调用 setShadingRate() 可能会导致不同的意外结果,具体取决于底层图形 API。 |
Flags 类型是QFlags<Flag> 的类型定义。它存储 Flag 值的 OR 组合。
enum QRhiGraphicsPipeline::FrontFace
指定正面卷绕顺序
常数 | 值 | 说明 |
---|---|---|
QRhiGraphicsPipeline::CCW | 0 | 逆时针(默认) |
QRhiGraphicsPipeline::CW | 1 | 顺时针 |
enum QRhiGraphicsPipeline::PolygonMode
指定多边形光栅化模式
多边形模式(Metal 中的三角形填充模式,D3D 中的填充模式)指定多边形光栅化时使用的填充模式。多边形可以绘制为实体(填充),也可以绘制为金属丝网(线条)。
对非填充多边形模式的支持是可选的,由QRhi::NonFillPolygonMode 功能表示。在 OpenGL ES 和某些 Vulkan 实现中,该特性可能会被报告为不支持,这意味着不能使用填充以外的值。
常量 | 值 | 描述 |
---|---|---|
QRhiGraphicsPipeline::Fill | 0 | 填充多边形内部(默认值) |
QRhiGraphicsPipeline::Line | 1 | 多边形的边界边缘绘制为线段。 |
enum QRhiGraphicsPipeline::StencilOp
指定模板操作
常数 | 值 | 说明 |
---|---|---|
QRhiGraphicsPipeline::StencilZero | 0 | |
QRhiGraphicsPipeline::Keep | 1 | (默认值) |
QRhiGraphicsPipeline::Replace | 2 | |
QRhiGraphicsPipeline::IncrementAndClamp | 3 | |
QRhiGraphicsPipeline::DecrementAndClamp | 4 | |
QRhiGraphicsPipeline::Invert | 5 | |
QRhiGraphicsPipeline::IncrementAndWrap | 6 | |
QRhiGraphicsPipeline::DecrementAndWrap | 7 |
enum QRhiGraphicsPipeline::Topology
指定原始拓扑结构
常数 | 值 | 说明 |
---|---|---|
QRhiGraphicsPipeline::Triangles | 0 | (默认值) |
QRhiGraphicsPipeline::TriangleStrip | 1 | |
QRhiGraphicsPipeline::TriangleFan | 2 | (仅在支持QRhi::TriangleFanTopology 时可用) |
QRhiGraphicsPipeline::Lines | 3 | |
QRhiGraphicsPipeline::LineStrip | 4 | |
QRhiGraphicsPipeline::Points | 5 | |
QRhiGraphicsPipeline::Patches | 6 | (仅在支持QRhi::Tessellation 时可用,并且要求管道中存在细分阶段)。 |
成员函数文档
const QRhiShaderStage *QRhiGraphicsPipeline::cbeginShaderStages() const
返回一个常量迭代器,指向着色器阶段列表中的第一个项目。
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cbeginTargetBlends() const
返回一个常量迭代器,指向呈现目标混合设置列表中的第一个项目。
const QRhiShaderStage *QRhiGraphicsPipeline::cendShaderStages() const
返回一个常量迭代器,指向着色器阶段列表中的最后一个项目。
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cendTargetBlends() const
返回一个常量迭代器,指向渲染目标混合设置列表中的最后一项。
[pure virtual]
bool QRhiGraphicsPipeline::create()
创建相应的本地图形资源。如果由于之前的 create() 没有相应的destroy() 而导致资源已经存在,则会先隐式调用destroy()。
成功时返回true
,图形操作失败时返回false
。无论返回值如何,调用destroy() 总是安全的。
注意: 根据底层图形应用程序接口的不同,这可能是一个昂贵的操作,尤其是当着色器从源代码或中间字节码格式编译/优化为 GPU 自身的指令集时。在适用的情况下,QRhi 后端会自动设置相关的非持久化设施来加速这一过程,例如,Vulkan 后端会自动创建一个VkPipelineCache
,以提高应用程序生命周期内的数据重用率。
注: 驱动程序还可能对着色器和流水线数据采用各种持久性(基于磁盘)缓存策略,这些策略是隐藏的,不在 Qt 的控制范围内。在某些情况下,根据图形 API 和QRhi 后端,QRhi 中提供了手动管理此类缓存的工具,允许检索可序列化的 blob,然后在应用程序的未来运行中重新加载,以确保更快的管道创建时间。详情请参见QRhi::pipelineCacheData() 和QRhi::setPipelineCacheData()。还需注意的是,在使用由更高级 Qt 框架(如Qt Quick )管理的QRhi 实例时,此类基于磁盘的缓存可能会自动处理,例如QQuickWindow 默认使用基于磁盘的管道缓存(除驱动级缓存外)。
QRhiGraphicsPipeline::CullMode QRhiGraphicsPipeline::cullMode() const
返回当前设置的面部剔除模式。
另请参阅 setCullMode()。
int QRhiGraphicsPipeline::depthBias() const
返回当前设置的深度偏置。
另请参见 setDepthBias()。
QRhiGraphicsPipeline::CompareOp QRhiGraphicsPipeline::depthOp() const
返回深度比较函数。
另请参见 setDepthOp()。
QRhiGraphicsPipeline::Flags QRhiGraphicsPipeline::flags() const
返回当前设置的标志。
另请参见 setFlags()。
QRhiGraphicsPipeline::FrontFace QRhiGraphicsPipeline::frontFace() const
返回当前设置的正面模式。
另请参阅 setFrontFace()。
bool QRhiGraphicsPipeline::hasDepthTest() const
如果启用了深度测试,则返回 true。
bool QRhiGraphicsPipeline::hasDepthWrite() const
如果启用了深度写入,则返回 true。
bool QRhiGraphicsPipeline::hasStencilTest() const
如果模板测试已启用,则返回 true。
float QRhiGraphicsPipeline::lineWidth() const
返回当前设置的线宽。默认值为 1.0f。
另请参见 setLineWidth()。
[since 6.7]
int QRhiGraphicsPipeline::multiViewCount() const
返回视图计数。默认值为 0,表示没有多视图渲染。
此函数在 Qt 6.7 中引入。
另请参阅 setMultiViewCount()。
int QRhiGraphicsPipeline::patchControlPointCount() const
返回当前设置的补丁控制点计数。
另请参阅 setPatchControlPointCount().
QRhiGraphicsPipeline::PolygonMode QRhiGraphicsPipeline::polygonMode() const
返回多边形模式。
另请参见 setPolygonMode()。
QRhiRenderPassDescriptor *QRhiGraphicsPipeline::renderPassDescriptor() const
返回当前设置的QRhiRenderPassDescriptor 。
另请参阅 setRenderPassDescriptor() 。
[override virtual]
QRhiResource::Type QRhiGraphicsPipeline::resourceType() const
重实现:QRhiResource::resourceType() 常量。
返回资源类型。
int QRhiGraphicsPipeline::sampleCount() const
返回当前设置的采样计数。1 表示无多采样抗锯齿。
另请参见 setSampleCount()。
void QRhiGraphicsPipeline::setCullMode(QRhiGraphicsPipeline::CullMode mode)
设置指定的面剔除mode 。
另请参阅 cullMode() 。
void QRhiGraphicsPipeline::setDepthBias(int bias)
设置深度bias 。默认值为 0。
另请参阅 depthBias() 。
void QRhiGraphicsPipeline::setDepthOp(QRhiGraphicsPipeline::CompareOp op)
设置深度比较函数op 。
另请参阅 depthOp() 。
void QRhiGraphicsPipeline::setDepthTest(bool enable)
根据enable 启用或禁用深度测试。默认情况下,深度测试和写出深度数据都是禁用的。
另请参阅 hasDepthTest() 和setDepthWrite() 。
void QRhiGraphicsPipeline::setDepthWrite(bool enable)
根据enable 控制将深度数据写入深度缓冲区。默认情况下禁用。深度写入通常与深度测试一起启用。
注意: 在未启用深度测试的情况下启用深度写入功能可能达不到预期效果,因此应避免启用。
另请参阅 hasDepthWrite() 和setDepthTest()。
void QRhiGraphicsPipeline::setFlags(QRhiGraphicsPipeline::Flags f)
设置标志f 。
另请参阅 flags() 。
void QRhiGraphicsPipeline::setFrontFace(QRhiGraphicsPipeline::FrontFace f)
设置正面模式f 。
另请参阅 frontFace() 。
void QRhiGraphicsPipeline::setLineWidth(float width)
设置行width 。如果QRhi::WideLines 功能在运行时被报告为不支持,则会忽略 1.0f 以外的值。
另请参阅 lineWidth() 。
[since 6.7]
void QRhiGraphicsPipeline::setMultiViewCount(int count)
设置多视图渲染的视图count 。默认值为 0,表示不进行多视图渲染。count 必须大于等于 2 才能触发多视图渲染。
只有当MultiView feature 报告支持多视图时,多视图才可用。渲染目标必须是二维纹理数组,而且渲染目标的颜色附件必须具有相同的count 设置。
有关多视图渲染的更多详情,请参阅QRhiColorAttachment::setMultiViewCount() 。
此函数在 Qt 6.7 中引入。
另请参阅 multiViewCount()、QRhi::MultiView 和QRhiColorAttachment::setMultiViewCount()。
void QRhiGraphicsPipeline::setPatchControlPointCount(int count)
将补丁控制点的数量设置为count 。默认值为 3。仅当拓扑结构设置为Patches 时才会使用。
另请参阅 patchControlPointCount() 。
void QRhiGraphicsPipeline::setPolygonMode(QRhiGraphicsPipeline::PolygonMode mode)
设置多边形mode 。默认为填充。
另请参阅 polygonMode() 和QRhi::NonFillPolygonMode 。
void QRhiGraphicsPipeline::setRenderPassDescriptor(QRhiRenderPassDescriptor *desc)
与指定的QRhiRenderPassDescriptor desc 关联。
另请参见 renderPassDescriptor() 。
void QRhiGraphicsPipeline::setSampleCount(int s)
设置采样次数。s 的典型值为 1、4 或 8。管道必须始终与渲染目标兼容,即样本数必须匹配。
另请参阅 sampleCount() 和QRhi::supportedSampleCounts()。
void QRhiGraphicsPipeline::setShaderResourceBindings(QRhiShaderResourceBindings *srb)
与srb 关联,描述资源绑定布局和资源 (QRhiBuffer,QRhiTexture) 本身。后者是可选的,因为在管道创建过程中,只有布局才是最重要的。因此,此处传递的srb 可以不指定实际的缓冲区或纹理对象 (nullptr
) ,只要在记录绘制调用之前通过setShaderResources() 绑定了另一个layout-compatible QRhiShaderResourceBindings 即可。
另请参阅 shaderResourceBindings() 。
void QRhiGraphicsPipeline::setShaderStages(std::initializer_list<QRhiShaderStage> list)
设置着色器阶段的list 。
template <typename InputIterator> void QRhiGraphicsPipeline::setShaderStages(InputIterator first, InputIterator last)
通过迭代器first 和last 设置着色器阶段列表。
void QRhiGraphicsPipeline::setSlopeScaledDepthBias(float bias)
设置斜率缩放深度bias 。默认值为 0。
另请参阅 slopeScaledDepthBias() 。
void QRhiGraphicsPipeline::setStencilBack(const QRhiGraphicsPipeline::StencilOpState &state)
设置背面的钢网测试state 。
另请参阅 stencilBack().
void QRhiGraphicsPipeline::setStencilFront(const QRhiGraphicsPipeline::StencilOpState &state)
设置正面的钢网测试state 。
另请参阅 stencilFront().
void QRhiGraphicsPipeline::setStencilReadMask(quint32 mask)
设置模板读取mask 。默认值为 0xFF。
另请参见 stencilReadMask().
void QRhiGraphicsPipeline::setStencilTest(bool enable)
根据enable 启用或禁用钢网测试。默认情况下禁用。
另请参阅 hasStencilTest().
void QRhiGraphicsPipeline::setStencilWriteMask(quint32 mask)
设置模板写入mask 。默认值为 0xFF。
另请参阅 stencilWriteMask() 。
void QRhiGraphicsPipeline::setTargetBlends(std::initializer_list<QRhiGraphicsPipeline::TargetBlend> list)
设置list 渲染目标混合设置。这是一个列表,因为当使用多个渲染目标时(即一个QRhiTextureRenderTarget 有多个QRhiColorAttachment ),每个渲染目标(颜色附件)都需要有一个TargetBlend 结构。
默认情况下,有一个默认构建的TargetBlend 集合。
另请参见 QRhi::MaxColorAttachments 。
template <typename InputIterator> void QRhiGraphicsPipeline::setTargetBlends(InputIterator first, InputIterator last)
设置迭代器first 和last 中的渲染目标混合设置列表。
void QRhiGraphicsPipeline::setTopology(QRhiGraphicsPipeline::Topology t)
设置原始拓扑t 。
另请参阅 topology() 。
void QRhiGraphicsPipeline::setVertexInputLayout(const QRhiVertexInputLayout &layout)
指定顶点输入layout 。
另请参阅 vertexInputLayout() 。
QRhiShaderResourceBindings *QRhiGraphicsPipeline::shaderResourceBindings() const
返回当前关联的QRhiShaderResourceBindings 对象。
另请参阅 setShaderResourceBindings().
const QRhiShaderStage *QRhiGraphicsPipeline::shaderStageAt(qsizetype index) const
返回指定index 的着色器阶段。
qsizetype QRhiGraphicsPipeline::shaderStageCount() const
返回此流水线中着色器级数。
float QRhiGraphicsPipeline::slopeScaledDepthBias() const
返回当前设置的斜率缩放深度偏差。
另请参阅 setSlopeScaledDepthBias().
QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilBack() const
返回背面的当前钢网测试状态。
另请参见 setStencilBack().
QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilFront() const
返回当前正面的钢网测试状态。
另请参见 setStencilFront().
quint32 QRhiGraphicsPipeline::stencilReadMask() const
返回当前模板读取掩码。
另请参见 setStencilReadMask().
quint32 QRhiGraphicsPipeline::stencilWriteMask() const
返回当前模板写入掩码。
另请参阅 setStencilWriteMask().
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::targetBlendAt(qsizetype index) const
返回指定index 的渲染目标混合设置。
qsizetype QRhiGraphicsPipeline::targetBlendCount() const
返回渲染目标混合设置的数量。
QRhiGraphicsPipeline::Topology QRhiGraphicsPipeline::topology() const
返回当前设置的原始拓扑结构。
另请参见 setTopology()。
QRhiVertexInputLayout QRhiGraphicsPipeline::vertexInputLayout() const
返回当前设置的顶点输入布局规范。
另请参阅 setVertexInputLayout().
© 2025 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.