QSGMaterialShader::GraphicsPipelineState Struct

struct QSGMaterialShader::GraphicsPipelineState

描述材料希望应用于当前活动图形流水线状态的状态更改。更多

公共类型

enum BlendFactor { Zero, One, SrcColor, OneMinusSrcColor, DstColor, …, OneMinusSrc1Alpha }
(since 6.8) enum class BlendOp { Add, Subtract, ReverseSubtract, Min, Max }
flags ColorMask
enum ColorMaskComponent { R, G, B, A }
enum CullMode { CullNone, CullFront, CullBack }
(since 6.4) enum PolygonMode { Fill, Line }

公共变量

QColor blendConstant
bool blendEnable
QSGMaterialShader::GraphicsPipelineState::ColorMask colorWrite
QSGMaterialShader::GraphicsPipelineState::CullMode cullMode
(since 6.5) QSGMaterialShader::GraphicsPipelineState::BlendFactor dstAlpha
QSGMaterialShader::GraphicsPipelineState::BlendFactor dstColor
(since 6.8) QSGMaterialShader::GraphicsPipelineState::BlendOp opAlpha
(since 6.8) QSGMaterialShader::GraphicsPipelineState::BlendOp opColor
(since 6.4) QSGMaterialShader::GraphicsPipelineState::PolygonMode polygonMode
(since 6.5) bool separateBlendFactors
(since 6.5) QSGMaterialShader::GraphicsPipelineState::BlendFactor srcAlpha
QSGMaterialShader::GraphicsPipelineState::BlendFactor srcColor

详细描述

QSGMaterialShader 不同,QSGMaterialShader 无法直接通过底层图形 API 发布状态更改命令。这主要是因为单独可更改状态的概念已被认为过时,而且现代图形 API 也不支持这一概念。

因此,应由QSGMaterialShader 公开一个包含所支持状态集的数据结构,如果有的话,素材可以在其 updatePipelineState() 实现中改变这些状态。然后,场景图将在内部把这些更改应用到活动的图形流水线状态,并在适当的时候回滚这些更改。

调用updateGraphicsPipelineState() 时,结构体的所有成员都会被设置为有效值,以反映渲染器的当前状态。不更改任何值(或不重新实现该函数)表示材料与默认值一致(但默认值是动态的,例如取决于QSGMaterial 标志)。

成员类型文档

enum GraphicsPipelineState::BlendFactor

常数数值
QSGMaterialShader::GraphicsPipelineState::Zero0
QSGMaterialShader::GraphicsPipelineState::One1
QSGMaterialShader::GraphicsPipelineState::SrcColor2
QSGMaterialShader::GraphicsPipelineState::OneMinusSrcColor3
QSGMaterialShader::GraphicsPipelineState::DstColor4
QSGMaterialShader::GraphicsPipelineState::OneMinusDstColor5
QSGMaterialShader::GraphicsPipelineState::SrcAlpha6
QSGMaterialShader::GraphicsPipelineState::OneMinusSrcAlpha7
QSGMaterialShader::GraphicsPipelineState::DstAlpha8
QSGMaterialShader::GraphicsPipelineState::OneMinusDstAlpha9
QSGMaterialShader::GraphicsPipelineState::ConstantColor10
QSGMaterialShader::GraphicsPipelineState::OneMinusConstantColor11
QSGMaterialShader::GraphicsPipelineState::ConstantAlpha12
QSGMaterialShader::GraphicsPipelineState::OneMinusConstantAlpha13
QSGMaterialShader::GraphicsPipelineState::SrcAlphaSaturate14
QSGMaterialShader::GraphicsPipelineState::Src1Color15
QSGMaterialShader::GraphicsPipelineState::OneMinusSrc1Color16
QSGMaterialShader::GraphicsPipelineState::Src1Alpha17
QSGMaterialShader::GraphicsPipelineState::OneMinusSrc1Alpha18

[since 6.8] enum class GraphicsPipelineState::BlendOp

常数
QSGMaterialShader::GraphicsPipelineState::BlendOp::Add0
QSGMaterialShader::GraphicsPipelineState::BlendOp::Subtract1
QSGMaterialShader::GraphicsPipelineState::BlendOp::ReverseSubtract2
QSGMaterialShader::GraphicsPipelineState::BlendOp::Min3
QSGMaterialShader::GraphicsPipelineState::BlendOp::Max4

此枚举在 Qt 6.8 中引入。

枚举 GraphicsPipelineState::ColorMaskComponent
flags GraphicsPipelineState::ColorMask

常量
QSGMaterialShader::GraphicsPipelineState::R1 << 0
QSGMaterialShader::GraphicsPipelineState::G1 << 1
QSGMaterialShader::GraphicsPipelineState::B1 << 2
QSGMaterialShader::GraphicsPipelineState::A1 << 3

ColorMask 类型是QFlags<ColorMaskComponent> 的类型定义。它存储了 ColorMaskComponent 值的 OR 组合。

enum GraphicsPipelineState::CullMode

常数数值
QSGMaterialShader::GraphicsPipelineState::CullNone0
QSGMaterialShader::GraphicsPipelineState::CullFront1
QSGMaterialShader::GraphicsPipelineState::CullBack2

[since 6.4] enum GraphicsPipelineState::PolygonMode

指定多边形光栅化模式

多边形模式(Metal 中的三角形填充模式,D3D 中的填充模式)指定多边形光栅化时使用的填充模式。多边形可以绘制为实体(填充),也可以绘制为金属丝网(线条)。

警告: OpenGL ES 不支持Line 多边形模式。无论设置何种多边形模式,OpenGL ES 都会将所有多边形光栅化为填充多边形。使用Line 会使您的应用程序无法移植。

常量说明
QSGMaterialShader::GraphicsPipelineState::Fill0填充多边形内部(默认值)
QSGMaterialShader::GraphicsPipelineState::Line1多边形的边界边缘绘制为线段。

此枚举在 Qt 6.4 中引入。

成员变量文档

QColor GraphicsPipelineState::blendConstant

混合常数,适用于混合因子设置为使用常数时。

bool GraphicsPipelineState::blendEnable

启用混合效果。

注意: 更改此标记时应小心谨慎,最好不要更改。相反,材质应始终使用 QSGMaterial::Blend 标记来表示它们希望使用混合效果。对于未声明 QSGMaterial::Blend 的材质,将此值从 false 改为 true 可能会导致意想不到的视觉效果。

QSGMaterialShader::GraphicsPipelineState::ColorMask GraphicsPipelineState::colorWrite

彩色书写面具。

QSGMaterialShader::GraphicsPipelineState::CullMode GraphicsPipelineState::cullMode

剔除模式。

[since 6.5] QSGMaterialShader::GraphicsPipelineState::BlendFactor GraphicsPipelineState::dstAlpha

目的地 alpha 混合因子。

仅当separateBlendFactors 设置为 true 时适用。

此文档在 Qt 6.5 中引入。

QSGMaterialShader::GraphicsPipelineState::BlendFactor GraphicsPipelineState::dstColor

目标混合因子,RGB 或 RGBA,取决于separateBlendFactors

[since 6.8] QSGMaterialShader::GraphicsPipelineState::BlendOp GraphicsPipelineState::opAlpha

Alpha 混合操作。

此文档在 Qt 6.8 中引入。

[since 6.8] QSGMaterialShader::GraphicsPipelineState::BlendOp GraphicsPipelineState::opColor

RGB 混合操作。

此文档在 Qt 6.8 中引入。

[since 6.4] QSGMaterialShader::GraphicsPipelineState::PolygonMode GraphicsPipelineState::polygonMode

多边形光栅化模式。

此文档在 Qt 6.4 中引入。

[since 6.5] bool GraphicsPipelineState::separateBlendFactors

表示单独指定 alpha 混合因子。

默认为 "false(假)",即 RGB 和阿尔法混合因子都由srcColordstColor 定义。设置为 "true "时,alpha 混合因子取自srcAlphadstAlpha ,而srcColordstColor 仅适用于 RGB。

此文档在 Qt 6.5 中引入。

[since 6.5] QSGMaterialShader::GraphicsPipelineState::BlendFactor GraphicsPipelineState::srcAlpha

源阿尔法混合因子。

仅当separateBlendFactors 设置为 true 时适用。

此文档在 Qt 6.5 中引入。

QSGMaterialShader::GraphicsPipelineState::BlendFactor GraphicsPipelineState::srcColor

源混合因子,RGB 或 RGBA,取决于separateBlendFactors

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