このページでは

QSGTexture Class

QSGTexture クラスは、シーングラフで使用されるテクスチャの基底クラスです。詳細...

ヘッダー: #include <QSGTexture>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
継承元: QObject
継承元:

QSGDynamicTexture

パブリック型

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 テクスチャを扱う関数は、updateSampledImage() を再実装し、特定のシェーダーリソースバインディングポイントにおいて、どの QSGTexture の基になるネイティブテクスチャを公開すべきかを決定するロジックを提供します。

QSGTexture は、画像(テクスチャ)とサンプラオブジェクトを分離しません。フィルタリングおよびラッピングのパラメータは、setMipmapFiltering()、setFiltering()、setHorizontalWrapMode()、およびsetVerticalWrapMode() で指定できます。シーングラフおよび Qt のグラフィックス抽象化機能により、必要に応じて個別のサンプラオブジェクトが作成されます。

テクスチャアトラス

一部のシーングラフバックエンドでは、複数の小さなテクスチャを1つの大きなテクスチャにグループ化するテクスチャアトラスを使用しています。この場合、関数 `isAtlasTexture()` は `true` を返します。アトラスは、レンダリングアルゴリズムによるソート効率を向上させ、パフォーマンスを向上させるために使用されます。 また、アトラスはバッチ処理(ジオメトリを統合して描画呼び出しの数を減らすこと)にも不可欠です。なぜなら、異なる2つの QSGTexture を使用する同じマテリアルの2つのインスタンスはバッチ処理できないのに対し、両方の QSGTexture が同じアトラスを参照している場合は、マテリアルがそれ以外で互換性がある限り、バッチ処理が可能になるからです。

アトラス内のテクスチャの位置は、normalizedTextureSubRect() 関数で指定されます。

アトラスの使用が適さない方法でテクスチャを使用する場合は、removedFromAtlas() 関数を使用して、アトラス化されていないコピーを抽出することができます。

注: QSG というプレフィックスを持つすべてのクラスは 、シーングラフのレンダリングスレッドでのみ使用する必要があります。詳細については、「シーングラフとレンダリング」を参照してください。

メンバ型のドキュメント

enum QSGTexture::AnisotropyLevel

テクスチャが画面に整列していない場合に使用する異方性フィルタリングのレベルを指定します。

定数値説明
QSGTexture::AnisotropyNone0異方性フィルタリングを行わない。
QSGTexture::Anisotropy2x12 倍の異方性フィルタリング。
QSGTexture::Anisotropy4x24倍の異方性フィルタリング。
QSGTexture::Anisotropy8x38倍の異方性フィルタリング。
QSGTexture::Anisotropy16x416倍異方性フィルタリング。

enum QSGTexture::Filtering

テクスチャ座標がピクセルに揃っていない場合、テクセルのサンプリングをどのようにフィルタリングするかを指定します。

定数値説明
QSGTexture::None0フィルタリングは行われない。この値は、setMipmapFiltering() と組み合わせてのみ使用される。
QSGTexture::Nearest1サンプリングは、最も近いテクセルを返します。
QSGTexture::Linear2サンプリングにより、隣接するテクセルの線形補間結果が返されます。

enum QSGTexture::WrapMode

サンプラーがテクスチャ座標をどのように扱うかを指定します。

定数値説明
QSGTexture::Repeat0テクスチャ座標の小数部分のみが使用されるため、1 より大きい値や 0 より小さい値は繰り返し表示されます。
QSGTexture::ClampToEdge11 より大きい値は 1 に、0 より小さい値は 0 にクリップされます。
QSGTexture::MirroredRepeat2テクスチャ座標が偶数の場合は、小数部のみが使用されます。奇数の場合は、テクスチャ座標は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()の実装内で、通常は条件を付けずに、QSGMaterialShader::RenderState からstate.rhi() およびstate.resourceUpdateBatch() を引数としてこの関数を呼び出すことが想定されています。

警告: この関数は 、レンダリングスレッドからのみ呼び出すことができます。

この関数は Qt 6.0 で導入されました。

[pure virtual] qint64 QSGTexture::comparisonKey() const

テクスチャの比較に適したキーを返します。通常、QSGMaterial::compare() の実装で使用されます。

QSGTexture ポインタを単に比較するだけでは必ずしも十分ではありません。なぜなら、内部で同じネイティブテクスチャオブジェクトを参照している2つの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 のプラットフォーム固有の機能へのアクセスを提供します。

QNativeInterface::QSGD3D11Texture

Direct3D 11 テクスチャ オブジェクトへのアクセスを提供し、その採用を可能にします

QNativeInterface::QSGD3D12Texture

Direct3D 12 テクスチャ オブジェクトへのアクセスを提供し、その採用を有効にします

QNativeInterface::QSGMetalTexture

Metalテクスチャオブジェクトへのアクセスを提供し、その採用を可能にします

QNativeInterface::QSGOpenGLTexture

OpenGLテクスチャオブジェクトへのアクセスを提供し、その採用を可能にします

QNativeInterface::QSGVulkanTexture

Vulkan 画像オブジェクトへのアクセスを提供し、その採用を可能にします

これにより、OpenGL の `GLuint ` テクスチャ ID や Vulkan の `VkImage ` ハンドルなど、基盤となるネイティブのテクスチャオブジェクトへのアクセスが可能になります。

要求されたインターフェースが利用できない場合は、nullptr が返されます。

[virtual] QRectF QSGTexture::normalizedTextureSubRect() const

このテクスチャが表す、textureSize() 内の矩形を正規化座標で返します。

デフォルトの実装では、位置 (0, 0) にある、幅と高さが 1 の矩形を返します。

[virtual] QSGTexture *QSGTexture::removedFromAtlas(QRhiResourceUpdateBatch *resourceUpdates = nullptr) const

この関数は、現在のテクスチャのコピーを返し、そのテクスチャをアトラスから削除します。

現在のテクスチャは変更されないため、テクスチャ座標を更新する必要はありません。

アトラスからテクスチャを削除することは、アトラス内のテクスチャのサブ矩形ではなく、テクスチャ座標 0~1 を操作するシェーダーにテクスチャを渡す場合に特に役立ちます。

テクスチャがテクスチャアトラスの一部でない場合、この関数は 0 を返します。

メモリ使用量を抑えるため、この関数の実装では、複数の呼び出しに対して同じインスタンスを返すことを推奨します。

resourceUpdates はオプションのリソース更新バッチであり、テクスチャ操作がある場合は、その操作がこのバッチにキューに入れられます。マテリアルは、QSGMaterialShader::RenderState からインスタンスを取得できます。null の場合、removedFromAtlas() の実装は独自のバッチを作成し、直ちにそれを送信します。ただし、有効なインスタンスが指定された場合、この関数は更新バッチを送信しません。

警告:この関数は 、レンダリングスレッドからのみ呼び出すことができます。

[virtual, since 6.0] QRhiTexture *QSGTexture::rhiTexture() const

このQSGTexture に対応するQRhiTexture を返します。該当する が存在しない場合は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()も参照してください 。

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