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()の実装で変更できる、サポートされているステートのセットを持つデータ構造を公開する必要があります。scenegraphは内部的に、これらの変更をアクティブなグラフィックス・パイプラインのステートに適用し、必要に応じてロールバックします。

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

この enum は Qt 6.8 で導入されました。

enum GraphicsPipelineState::ColorMaskComponent
flags GraphicsPipelineState::ColorMask

定数
QSGMaterialShader::GraphicsPipelineState::R1 << 0
QSGMaterialShader::GraphicsPipelineState::G1 << 1
QSGMaterialShader::GraphicsPipelineState::B1 << 2
QSGMaterialShader::GraphicsPipelineState::A1 << 3

ColorMask 型はQFlags<ColorMaskComponent> の typedef です。ColorMaskComponent の値の OR の組み合わせを格納します。

enum GraphicsPipelineState::CullMode

定数
QSGMaterialShader::GraphicsPipelineState::CullNone0
QSGMaterialShader::GraphicsPipelineState::CullFront1
QSGMaterialShader::GraphicsPipelineState::CullBack2

[since 6.4] enum GraphicsPipelineState::PolygonMode

ポリゴンのラスタライズモードを指定します。

ポリゴンモード(メタルでは三角形塗りつぶしモード、D3Dでは塗りつぶしモード)は、ポリゴンをラスタライズするときに使用する塗りつぶしモードを指定します。ポリゴンはソリッド(Fill)、またはワイヤーメッシュ(Line)として描画されます。

警告 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

デスティネーション・アルファ・ブレンディング係数。

separateBlendFactors が true に設定されている場合にのみ適用されます。

このドキュメントは Qt 6.5 で導入されました。

QSGMaterialShader::GraphicsPipelineState::BlendFactor GraphicsPipelineState::dstColor

デスティネーション ブレンディング係数。separateBlendFactors に応じて RGB または RGBA のどちらか。

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

アルファブレンド操作。

このドキュメントは 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

アルファ混合係数が別々に指定されることを示します。

デフォルトでは False で、RGB とアルファブレンド係数の両方がsrcColordstColor で定義されることを意味します。true に設定すると、アルファブレンド係数はsrcAlphadstAlpha から取得され、srcColordstColor は RGB にのみ適用されます。

このドキュメントは Qt 6.5 で導入されました。

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

ソースのアルファブレンディング係数。

separateBlendFactors が true に設定されている場合にのみ適用されます。

このドキュメントは Qt 6.5 で導入されました。

QSGMaterialShader::GraphicsPipelineState::BlendFactor GraphicsPipelineState::srcColor

separateBlendFactors 、RGB か RGBA のどちらかになります。

このドキュメントは、Qt 6.5 で導入されました。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。