RenderState Class

class QSGMaterialShader::RenderState

QSGMaterialShader::updateUniformData() やその他のupdate 型関数を呼び出している間、現在のレンダリング状態をカプセル化します。詳細...

パブリック型

enum DirtyState { DirtyMatrix, DirtyOpacity, DirtyCachedMaterialData, DirtyAll }
flags DirtyStates

パブリック関数

QMatrix4x4 combinedMatrix() const
float determinant() const
float devicePixelRatio() const
QRect deviceRect() const
QSGMaterialShader::RenderState::DirtyStates dirtyStates() const
bool isMatrixDirty() const
bool isOpacityDirty() const
QMatrix4x4 modelViewMatrix() const
float opacity() const
QMatrix4x4 projectionMatrix() const
QRhiResourceUpdateBatch *resourceUpdateBatch()
QRhi *rhi()
QByteArray *uniformData()
QRect viewportRect() const

詳細説明

レンダリング状態には、シーングラフの現在の状態に適合するためにシェーダーが尊重する必要がある、いくつかのアクセサが含まれています。

メンバ型の説明

enum RenderState::DirtyState
flags RenderState::DirtyStates

定数説明
QSGMaterialShader::RenderState::DirtyMatrix0x0001行列が変更され、更新されなければならないことを示すために使用されます。
QSGMaterialShader::RenderState::DirtyOpacity0x0002不透明度が変更され、更新されなければならないことを示すために使用されます。
QSGMaterialShader::RenderState::DirtyCachedMaterialData0x0004キャッシュされたマテリアルの状態が変更され、更新する必要があることを示すために使用されます。
QSGMaterialShader::RenderState::DirtyAll0xFFFFすべてを更新する必要があることを示すために使用されます。

DirtyStates型はQFlags<DirtyState>のtypedefである。DirtyState 値の OR の組み合わせを格納する。

メンバ関数ドキュメント

QMatrix4x4 RenderState::combinedMatrix() const

モデルビュー行列とプロジェクト行列を結合した行列を返します。

float RenderState::determinant() const

レンダリングに使用するモデルビューの行列式を返します。

float RenderState::devicePixelRatio() const

レンダリングに使用する物理ピクセルとデバイスに依存しないピクセルの比率を返します。

QRect RenderState::deviceRect() const

レンダリング先のサーフェスのデバイス矩形を返します。

QSGMaterialShader::RenderState::DirtyStates RenderState::dirtyStates() const

このマテリアルでレンダリングされたジオメトリが現在のレンダリング状態に適合するように、変更されたレンダリング状態および更新が必要なレンダリング状態を返します。

bool RenderState::isMatrixDirty() const

dirtyStates() にダーティ行列の状態が含まれていればtrue を返し、そうでなければfalse を返す。

bool RenderState::isOpacityDirty() const

dirtyStates() にダーティな不透明度状態が含まれていればtrue を返し、そうでなければfalse を返す。

QMatrix4x4 RenderState::modelViewMatrix() const

モデルのビュー行列を返します。

マテリアルに RequiresFullMatrix フラグが設定されている場合、これはシーングラフから計算された完全なトランスフォーム行列であることが保証されます。

ただし、このフラグが設定されていない場合、レンダラーはこの行列を変更することができます。たとえば、CPU で頂点を事前変換して、この行列を同一行列に設定することができます。

上記のような場合でも、マテリアルに RequiresDeterminant フラグを設定し、determinant() アクセサを呼び出すことで、実際の行列式を取得することができます。

float RenderState::opacity() const

レンダリングに使用する累積不透明度を返します。

QMatrix4x4 RenderState::projectionMatrix() const

射影行列を返します。

QRhiResourceUpdateBatch *RenderState::resourceUpdateBatch()

アップロードとコピー操作をキューに入れることができるリソース更新バッチを返します。これは通常、QSGMaterialShader::updateSampledImage() でテクスチャ画像のコンテンツ更新をキューに入れるために使用されます。

QRhi *RenderState::rhi()

現在のQRhi を返す。

QByteArray *RenderState::uniformData()

シェーダのユニフォーム(定数)バッファのデータへのポインタを返します。ユニフォームデータはQSGMaterialShader::updateUniformData() からのみ更新する必要があります。QSGMaterialShader::updateSampledImage() のような他の再実装可能な関数では、戻り値は null です。

注意: シェーダ内でstd140 を使ってユニフォームブロックを宣言し、OpenGL仕様の7.6.2.2節で説明されている標準ユニフォームブロックレイアウトを注意深く研究することを強く推奨します。データがこのQByteArray の正しい位置に配置されるようにするのは、QSGMaterialShader 実装次第です。他のシェーディング言語に翻訳されたシェーダーコードは、ターゲット言語がデフォルトで異なるパッキングルールを使用している場合でも、ブロックメンバーに同じオフセットを使用することが期待されます。

注意: C++ 構造体と GLSL ユニフォームブロックのレイアウトが一致することが検証されていない限り、一度に複数のメンバを更新するために、構造体などの C++ POD 型からコピーすることは避けてください。

QRect RenderState::viewportRect() const

レンダリング先のサーフェスのビューポート矩形を返す。

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