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

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

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

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

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