QSGTexture Class
QSGTexture クラスは、シーングラフで使用されるテクスチャの基本クラスです。詳細...
ヘッダー | #include <QSGTexture> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
qmake: | QT += quick |
を継承する: | QObject |
継承元: |
パブリックな型
enum | AnisotropyLevel { AnisotropyNone, Anisotropy2x, Anisotropy4x, Anisotropy8x, Anisotropy16x } |
enum | Filtering { None, Nearest, Linear } |
enum | WrapMode { Repeat, ClampToEdge, MirroredRepeat } |
パブリック関数
QSGTexture() | |
virtual | ~QSGTexture() override |
QSGTexture::AnisotropyLevel | anisotropyLevel() const |
(since 6.0) virtual void | commitTextureOperations(QRhi *rhi, QRhiResourceUpdateBatch *resourceUpdates) |
virtual qint64 | comparisonKey() const = 0 |
QRectF | convertToNormalizedSourceRect(const QRectF &rect) const |
QSGTexture::Filtering | filtering() const |
virtual bool | hasAlphaChannel() const = 0 |
virtual bool | hasMipmaps() const = 0 |
QSGTexture::WrapMode | horizontalWrapMode() const |
virtual bool | isAtlasTexture() const |
QSGTexture::Filtering | mipmapFiltering() const |
QNativeInterface * | nativeInterface() const |
virtual QRectF | normalizedTextureSubRect() const |
virtual QSGTexture * | removedFromAtlas(QRhiResourceUpdateBatch *resourceUpdates = nullptr) const |
(since 6.0) virtual QRhiTexture * | rhiTexture() const |
void | setAnisotropyLevel(QSGTexture::AnisotropyLevel level) |
void | setFiltering(QSGTexture::Filtering filter) |
void | setHorizontalWrapMode(QSGTexture::WrapMode hwrap) |
void | setMipmapFiltering(QSGTexture::Filtering filter) |
void | setVerticalWrapMode(QSGTexture::WrapMode vwrap) |
virtual QSize | textureSize() const = 0 |
QSGTexture::WrapMode | verticalWrapMode() const |
詳細説明
YUVビデオフレームや8ビットのアルファマスクなど、任意の入力テクスチャをサポートするために、ユーザーは自由に独自のテクスチャクラスを実装することができます。シーングラフは、RGBA テクスチャのデフォルト実装を提供します。デフォルト実装は直接インスタンス化されず、QQuickWindow::createTextureFromImage() などのファクトリ関数によって構築されます。
デフォルトの実装では、各 QSGTexture はQRhiTexture でサポートされ、この には OpenGL テクスチャや Vulkan イメージなどのネイティブテクスチャオブジェクトが含まれます。
ピクセル単位のサイズはtextureSize() で与えられます。hasAlphaChannel() は、テクスチャに不透明度が含まれているかどうかを報告し、hasMipmaps() は、テクスチャにミップマップレベルが含まれているかどうかを報告します。
Materials テクスチャを扱う QSGTexture は、 () を再実装して、特定のシェーダ・リソース・バインディング・ポイントでどの QSGTexture の基礎となるネイティブ・テクスチャを公開すべきかを決定するロジックを提供します。updateSampledImage
QSGTexture は、イメージ(テクスチャ)オブジェクトとサンプラーオブジェクトを分離しません。フィルタリングとラッピングのパラメータは、setMipmapFiltering ()、setFiltering ()、setHorizontalWrapMode ()、setVerticalWrapMode ()で指定できます。シーングラフと Qt のグラフィクス抽象化機能は、該当する場合、サンプラーオブジェクトを分離して作成します。
テクスチャ・アトラス
シーングラフのバックエンドの中には、複数の小さなテクスチャを1つの大きなテクスチャにまとめるテクスチャアトラスを使うものがあります。この場合、関数isAtlasTexture() は true を返します。アトラスは、レンダリングアルゴリズムがより良いソートを行うのを補助し、パフォーマンスを向上させるために使用されます。アトラスはバッチ処理(ジオメトリをマージして描画呼び出し回数を減らす)にも不可欠です。2つの異なる QSGTexture を使用した同じマテリアルの2つのインスタンスはバッチ処理できませんが、両方の QSGTexture が同じアトラスを参照している場合は、マテリアルに互換性があればバッチ処理できます。
アトラス内のテクスチャの位置は、normalizedTextureSubRect ()関数で与えられます。
テクスチャがアトラスが好ましくない方法で使用される場合、removedFromAtlas() 関数を使用して、アトラスでないコピーを抽出できます。
注意: QSG 接頭辞を持つすべてのクラスは、シーングラフのレンダリングスレッドでのみ使用する必要があります。詳細については、シーングラフとレンダリングを参照してください。
メンバー型ドキュメント
enum QSGTexture::AnisotropyLevel
テクスチャがスクリーンアラインされていないときに使用される異方性フィルタリングレベルを指定します。
定数 | 値 | 説明 |
---|---|---|
QSGTexture::AnisotropyNone | 0 | 異方性フィルタリングなし。 |
QSGTexture::Anisotropy2x | 1 | 2x 異方性フィルタリング。 |
QSGTexture::Anisotropy4x | 2 | 4倍の異方性フィルタリング。 |
QSGTexture::Anisotropy8x | 3 | 8倍の異方性フィルタリング。 |
QSGTexture::Anisotropy16x | 4 | 16倍の異方性フィルタリング。 |
enum QSGTexture::Filtering
テクスチャ座標がピクセル整列されていない場合に、テクスチャのサンプリングがどのようにフィルタリングされるかを指定します。
定数 | 値 | 説明 |
---|---|---|
QSGTexture::None | 0 | フィルタリングは行われません。この値はsetMipmapFiltering() とともにのみ使用されます。 |
QSGTexture::Nearest | 1 | サンプリングは、最も近いテクセルを返します。 |
QSGTexture::Linear | 2 | Sampling は、隣接する texel の線形補間を返します。 |
enum QSGTexture::WrapMode
サンプラーがテクスチャ座標をどのように扱うかを指定します。
定数 | 値 | 説明 |
---|---|---|
QSGTexture::Repeat | 0 | テクスチャ座標の小数部分のみが使用され、1以上と0以下の値が繰り返されます。 |
QSGTexture::ClampToEdge | 1 | 1以上の値は1にクランプされ、0以下の値は0にクランプされます。 |
QSGTexture::MirroredRepeat | 2 | テクスチャ座標が偶数の場合、小数部のみが使用される。奇数の場合、テクスチャ座標は1 - fractional part に設定されます。この値は Qt 5.10 で導入されました。 |
メンバ関数のドキュメント
QSGTexture::QSGTexture()
QSGTexture 基本クラスを構築します。
[override virtual noexcept]
QSGTexture::~QSGTexture()
QSGTexture を破壊する。
QSGTexture::AnisotropyLevel QSGTexture::anisotropyLevel() const
このテクスチャのフィルタリングに使用されている異方性レベルを返します。
setAnisotropyLevel()も参照してください 。
[virtual, since 6.0]
void QSGTexture::commitTextureOperations(QRhi *rhi, QRhiResourceUpdateBatch *resourceUpdates)
この関数を呼び出して、resourceUpdates への画像アップロード操作を待ち行列に入れます。新しいデータがない場合(たとえば、最後にこの関数をコールしてから setImage() がなかった場合など)、この関数は何もしません。
rhi テクスチャを含むマテリアルは、そのupdateSampledImage() 実装からこの関数を呼び出すことが期待されます。通常、この関数は無条件で呼び出され、state.rhi()
とstate.resourceUpdateBatch()
をQSGMaterialShader::RenderState から渡します。
警告 この関数はレンダリングスレッドからのみ呼び出すことができます。
この関数は Qt 6.0 で導入されました。
[pure virtual]
qint64 QSGTexture::comparisonKey() const
テクスチャの比較に適したキーを返します。通常、QSGMaterial::compare() の実装で使用されます。
同じネイティブテクスチャオブジェクトを参照する2つのQSGTexture インスタンスも等しいとみなす必要があるため、QSGTexture ポインタを比較するだけでは必ずしも十分ではありません。そのため、この関数が必要になります。
この関数の実装は、グラフィックス・リソース(ネイティブ・テクスチャ・オブジェクト)を生成することを期待されていません。
下にネイティブ・テクスチャ・オブジェクトを持たないQSGTexture は、通常、他のQSGTexture と等しくないので、戻り値はそれに応じて細工されなければなりません。これには例外があり、特にアトレーシングが使用される場合(複数のテクスチャがフードの下で同じアトラステクスチャを共有する場合)は、サブクラスの実装次第で適切に対処できます。
警告 この関数はレンダリングスレッドからのみ呼び出すことができます。
QRectF QSGTexture::convertToNormalizedSourceRect(const QRectF &rect) const
rect を正規化座標に変換して返す。
normalizedTextureSubRect()も参照 。
QSGTexture::Filtering QSGTexture::filtering() const
このテクスチャに使用するサンプリングモードを返します。
setFiltering()も参照してください 。
[pure virtual]
bool QSGTexture::hasAlphaChannel() const
テクスチャデータにアルファチャンネルが含まれている場合にtrueを返します。
[pure virtual]
bool QSGTexture::hasMipmaps() const
テクスチャデータがミップマップレベルを含む場合にtrueを返します。
QSGTexture::WrapMode QSGTexture::horizontalWrapMode() const
このテクスチャに使用する水平ラップモードを返します。
setHorizontalWrapMode()も参照してください 。
[virtual]
bool QSGTexture::isAtlasTexture() const
このテクスチャがアトラスの一部であるかどうかを返します。
デフォルトの実装は false を返します。
QSGTexture::Filtering QSGTexture::mipmapFiltering() const
このテクスチャからサンプリングするときにミップマッピングを使用するかどうかを返します。
setMipmapFiltering()も参照してください 。
template <typename QNativeInterface> QNativeInterface *QSGTexture::nativeInterface() const
テクスチャの指定された型のネイティブインターフェースを返します。
この関数は、QNativeInterface 名前空間で宣言されているQSGTexture のプラットフォーム固有の機能へのアクセスを提供します:
Direct3D 11 テクスチャオブジェクトへのアクセスを提供し、Direct3D 11 テクスチャオブジェクトの採用を可能にします。 | |
Direct3D 12 テクスチャオブジェクトへのアクセスを提供し、Direct3D 12 テクスチャオブジェクトの採用を可能にします。 | |
Metal テクスチャオブジェクトへのアクセスを提供し、Metal テクスチャオブ ジェクトの採用を可能にします。 | |
OpenGLテクスチャオブジェクトへのアクセスを提供し、OpenGLテクスチャオブジェクトの採用を可能にします。 | |
Vulkanイメージオブジェクトへのアクセスを提供し、Vulkanイメージオブジェクトの採用を可能にします。 |
これは、OpenGLではGLuint
テクスチャID、VulkanではVkImage
ハンドルのような、基礎となるネイティブテクスチャオブジェクトへのアクセスを可能にします。
要求されたインターフェースが利用できない場合は、nullptr
。
[virtual]
QRectF QSGTexture::normalizedTextureSubRect() const
このテクスチャが表すtextureSize() 内の矩形を正規化座標で返します。
デフォルトの実装では、位置 (0, 0) で幅と高さが 1 の矩形を返します。
[virtual]
QSGTexture *QSGTexture::removedFromAtlas(QRhiResourceUpdateBatch *resourceUpdates = nullptr) const
この関数は、アトラスから削除された現在のテクスチャのコピーを返します。
現在のテクスチャは変更されないので、テクスチャ座標を更新する必要はありません。
アトラスからテクスチャを削除することは、主に、アトラス内のテクスチャサブrectの代わりにテクスチャ座標0-1を操作するシェーダにそれを渡すときに便利です。
テクスチャがテクスチャアトラスの一部でない場合、この関数は0を返します。
この関数の実装では、メモリ使用量を制限するために、複数の呼び出しに対して同じインスタンスを返すことが推奨されます。
resourceUpdates はオプションのリソース更新バッチで、テクスチャ操作がある場合は、その操作がエンキューされます。マテリアルは、 からインスタンスを取得できます。 NULL の場合、 removedFromAtlas() 実装は独自のバッチを作成し、すぐにそれをサブミットします。ただし、有効なインスタンスが指定されている場合、この関数は更新バッチを送信しません。QSGMaterialShader::RenderState
警告: この関数は、レンダリングスレッドからのみ呼び出すことができます。
[virtual, since 6.0]
QRhiTexture *QSGTexture::rhiTexture() const
このQSGTexture のQRhiTexture を返すか、(有効なテクスチャがまだ内部で作成されていないか、使用中の scenegraph バックエンドにそのコンセプトが適用されていないため)ない場合は null を返します。
この関数は、QRhiTexture がない場合、新しい を作成することは期待されていません。その場合はNULLを返す必要があります。レンダラーに期待されることは、NULLテクスチャは、代わりに透明なダミーテクスチャを使用することにつながるということです。
警告 この関数はレンダリングスレッドからのみ呼び出すことができます。
この関数は Qt 6.0 で導入されました。
void QSGTexture::setAnisotropyLevel(QSGTexture::AnisotropyLevel level)
異方性フィルタリングのレベルをlevel に設定します。 デフォルト値はQSGTexture::AnisotropyNone で、これは異方性フィルタリングが有効でないことを意味します。
注意: 使用されているグラフィックスAPIによっては、このリクエストは無視されるかもしれません。実行時に異方性フィルタリングがサポートされている保証はありません。
anisotropyLevel()も参照のこと 。
void QSGTexture::setFiltering(QSGTexture::Filtering filter)
サンプリング・モードをfilter に設定する。
filtering()も参照 。
void QSGTexture::setHorizontalWrapMode(QSGTexture::WrapMode hwrap)
に水平ラップモードを設定する。hwrap
horizontalWrapMode()も参照 。
void QSGTexture::setMipmapFiltering(QSGTexture::Filtering filter)
ミップマップのサンプリングモードをfilter に設定します。
ミップマップフィルタリングを設定しても、テクスチャにミップマップがない場合は効果がありません。
mipmapFiltering() およびhasMipmaps()も参照してください 。
void QSGTexture::setVerticalWrapMode(QSGTexture::WrapMode vwrap)
に垂直ラップモードを設定する。vwrap
verticalWrapMode()も参照 。
[pure virtual]
QSize QSGTexture::textureSize() const
テクスチャのサイズをピクセル単位で返します。
QSGTexture::WrapMode QSGTexture::verticalWrapMode() const
このテクスチャに使用する垂直ラップモードを返します。
setVerticalWrapMode()も参照してください 。
© 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.