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
レンダリング先のサーフェスのデバイス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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。