QSGMaterialShader::RenderState Class
class QSGMaterialShader::RenderStateQSGMaterialShader::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::DirtyMatrix | 0x0001 | 行列が変更され、更新が必要であることを示すために使用されます。 |
QSGMaterialShader::RenderState::DirtyOpacity | 0x0002 | 不透明度が変更され、更新が必要であることを示すために使用されます。 |
QSGMaterialShader::RenderState::DirtyCachedMaterialData | 0x0004 | キャッシュされたマテリアル状態が変更され、更新が必要であることを示すために使用されます。 |
QSGMaterialShader::RenderState::DirtyAll | 0xFFFF | すべてを更新する必要があることを示すために使用されます。 |
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++の構造体などのPOD型からコピーして複数のメンバを一度に更新することは、C++の構造体とGLSLのユニフォームブロックのレイアウトが一致していることが確認されていない限り、避けてください 。
QRect RenderState::viewportRect() const
レンダリング対象のサーフェスのビューポート矩形を返します。
© 2026 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.