このページでは

QRhiTexture Class

テクスチャリソース。詳細...

ヘッダー: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
以下のように: Qt 6.6
継承元: QRhiResource

パブリック型

struct NativeTexture
(since 6.8) struct ViewFormat
enum Flag { RenderTarget, CubeMap, MipMapped, sRGB, UsedAsTransferSource, …, UsedAsShadingRateMap }
flags Flags
enum Format { UnknownFormat, RGBA8, BGRA8, R8, RG8, …, RGBA32SI }

パブリック関数

int arrayRangeLength() const
int arrayRangeStart() const
int arraySize() const
virtual bool create() = 0
virtual bool createFrom(QRhiTexture::NativeTexture src)
int depth() const
QRhiTexture::Flags flags() const
QRhiTexture::Format format() const
virtual QRhiTexture::NativeTexture nativeTexture()
QSize pixelSize() const
(since 6.8) QRhiTexture::ViewFormat readViewFormat() const
int sampleCount() const
void setArrayRange(int startIndex, int count)
void setArraySize(int arraySize)
void setDepth(int depth)
void setFlags(QRhiTexture::Flags f)
void setFormat(QRhiTexture::Format fmt)
virtual void setNativeLayout(int layout)
void setPixelSize(const QSize &sz)
(since 6.8) void setReadViewFormat(const QRhiTexture::ViewFormat &fmt)
void setSampleCount(int s)
(since 6.8) void setWriteViewFormat(const QRhiTexture::ViewFormat &fmt)
(since 6.8) QRhiTexture::ViewFormat writeViewFormat() const

再実装されたパブリック関数

virtual QRhiResource::Type resourceType() const override

詳細な説明

QRhiTexture は、VkImage やMTLTexture などのネイティブテクスチャオブジェクトをカプセル化します。

QRhiTexture インスタンスは、常にthe QRhi's newTexture() function を呼び出すことで作成されます。これにより、ネイティブのグラフィックスリソースは作成されません。リソースを作成するには、フォーマットやサイズなどの適切なオプションを設定した後、create() を呼び出します。ただし、ほとんどの場合、これらのオプションはnewTexture() に渡された引数に基づいてすでに設定されています。

flags を正しく設定することは不可欠です。そうしないと、基盤となるQRhi バックエンドやグラフィックスAPIに応じて、さまざまなエラーが発生する可能性があります。例えば、QRhiTextureRenderTarget を介してレンダリングパスからテクスチャにレンダリングを行う場合、そのテクスチャはRenderTarget フラグを設定して作成する必要があります。同様に、テクスチャがread back される場合は、UsedAsTransferSource フラグを事前に設定しておく必要があります。 ミップマップ化されたテクスチャには、MipMapped フラグが設定されている必要があります。以下同様です。create()が成功した後は、フラグを変更することはできません。既存のテクスチャオブジェクトを解放し、設定を変更した新しいネイティブテクスチャオブジェクトを作成するには、セッターを呼び出し、create()を再度呼び出してください。この操作は、処理負荷が高くなる可能性があります。

使用例

512×512ピクセルの2Dテクスチャを作成し、その内容をすべて緑に設定するには:

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, QSize(512, 512));
if (!texture->create()) { error(); }
QRhiResourceUpdateBatch *batch = rhi->nextResourceUpdateBatch();
QImage image(512, 512, QImage::Format_RGBA8888);
image.fill(Qt::green);
batch->uploadTexture(texture, image);
// ...
commandBuffer->resourceUpdate(batch); // or, alternatively, pass 'batch' to a beginPass() call

一般的なパターン

create() を呼び出すと、以前にcreate() が正常に呼び出されていた場合、既存のネイティブリソースはすべて破棄されます。それらのネイティブリソースが、処理中のフレームによってまだ使用されている場合(つまり、GPU によってまだ読み込まれている可能性がある場合)、それらのリソースの破棄は自動的に延期されます。 したがって、既存のテクスチャのサイズを安全に変更するための、非常に一般的で便利なパターンは以下の通りです。実際には、これにより内部でネイティブテクスチャリソース全体が破棄され、新しいものが作成されるため、 必ずしも低コストな操作とは言えませんが、texture オブジェクト自体を破棄しないため、他のデータ構造(例えば、QRhiTextureが参照されている任意のQShaderResourceBindingなど)におけるそのオブジェクトへのすべての参照が有効なまま保たれることから、他の方法よりも便利で高速です。

// determine newSize, e.g. based on the swapchain's output size or other factors
if (texture->pixelSize() != newSize) {
    texture->setPixelSize(newSize);
    if (!texture->create()) { error(); }
}
// continue using texture, fill it with new data

注:これは 互換性の保証が限定的な RHI API です。詳細についてはQRhi を参照してください。

QRhiResourceUpdateBatch 、QRhi 、およびQRhiTextureRenderTargetも参照してください 。

メンバ型のドキュメント

enum QRhiTexture::Flag
flags QRhiTexture::Flags

テクスチャの使用方法を指定するためのフラグ値です。create() の実行前に設定されたフラグを無視し、事前に宣言されていない方法でテクスチャを使用しようとすると、バックエンドや基盤となるグラフィックス API によっては、未定義の挙動が生じたり、パフォーマンスが低下したりする可能性があります。

定数値説明
QRhiTexture::RenderTarget1 << 0QRhiTextureRenderTarget と組み合わせて使用されるテクスチャ。
QRhiTexture::CubeMap1 << 2テクスチャはキューブマップです。このようなテクスチャには 6 つのレイヤーがあり、+X、-X、+Y、-Y、+Z、-Z の順に各面に対応しています。キューブマップテクスチャはマルチサンプリングに対応していません。
QRhiTexture::MipMapped1 << 3このテクスチャにはミップマップが含まれます。適切なミップレベル数は自動的に計算され、QRhi::mipLevelsForSize() を通じて取得することもできます。各ミップレベル用の画像は、アップロードされたテクスチャ内に含まれているか、QRhiResourceUpdateBatch::generateMips() を通じて生成されたものである必要があります。マルチサンプルテクスチャにはミップマップを含めることはできません。
QRhiTexture::sRGB1 << 4sRGB 形式を使用してください。
QRhiTexture::UsedAsTransferSource1 << 5このテクスチャは、テクスチャのコピーまたはリードバックのソースとして使用されます。つまり、QRhiResourceUpdateBatch::copyTexture() またはQRhiResourceUpdateBatch::readBackTexture() において、このテクスチャがソースとして指定されます。
QRhiTexture::UsedWithGenerateMips1 << 6そのテクスチャは、QRhiResourceUpdateBatch::generateMips() とともに使用される予定です。
QRhiTexture::UsedWithLoadStore1 << 7テクスチャは、たとえばコンピュートシェーダーなどでの画像のロード/ストア操作で使用される予定です。
QRhiTexture::UsedAsCompressedAtlas1 << 8テクスチャは圧縮形式であり、サブリソースのアップロードの寸法がテクスチャのサイズと一致しない場合があります。
QRhiTexture::ExternalOES1 << 9このテクスチャは、OpenGL では GL_TEXTURE_EXTERNAL_OES ターゲットを使用する必要があります。このフラグは、他のグラフィックス API では無視されます。
QRhiTexture::ThreeDimensional1 << 10テクスチャは 3D テクスチャです。このようなテクスチャは、幅と高さに加えて深度も指定する `QRhi::newTexture()` のオーバーロードを使用して作成する必要があります。3D テクスチャはミップマップを持つことができますが、マルチサンプルにはできません。 3Dテクスチャへのレンダリングまたはデータアップロードを行う場合、レンダリングターゲットのカラーアタッチメントまたはアップロード記述で指定されたlayer は、範囲[0..depth-1]内の単一のスライスを指します。基盤となるグラフィックスAPIは、実行時に3Dテクスチャをサポートしていない場合があります。サポートの有無は、QRhi::ThreeDimensionalTextures 機能によって示されます。
QRhiTexture::TextureRectangleGL1 << 11OpenGL を使用する場合、テクスチャは GL_TEXTURE_RECTANGLE ターゲットを使用する必要があります。他のグラフィックス API では、このフラグは無視されます。ExternalOES と同様に、このフラグは、プラットフォームから受け取ったネイティブの OpenGL テクスチャオブジェクトが `QRhiTexture` にラップされており、プラットフォームが 2D 以外のテクスチャターゲット用のテクスチャしか提供できないようなプラットフォーム API を扱う際に役立ちます。
QRhiTexture::TextureArray1 << 12このテクスチャはテクスチャ配列、すなわち2Dテクスチャの均質な配列である単一のテクスチャオブジェクトです。 テクスチャ配列は、QRhi::newTextureArray() を使用して作成されます。基盤となるグラフィックス API は、実行時にテクスチャ配列オブジェクトをサポートしていない場合があります。サポートの有無は、QRhi::TextureArrays 機能によって示されます。テクスチャ配列へのレンダリングやデータアップロードを行う際、レンダリングターゲットのカラーアタッチメントまたはアップロード記述で指定されたlayer によって、配列内の単一の要素が選択されます。
QRhiTexture::OneDimensional1 << 13このテクスチャは1次元テクスチャです。このようなテクスチャは、QRhi::newTexture() に高さおよび奥行きを0として渡すことで作成できます。なお、基盤となるグラフィックスAPIによっては、1次元テクスチャに制限がある場合があります。たとえば、それらへのレンダリングや、ミップマップベースのフィルタリングでの使用がサポートされていない可能性があります。これは、QRhi::OneDimensionalTextures およびQRhi::OneDimensionalTextureMipmaps の機能フラグによって示されます。
QRhiTexture::UsedAsShadingRateMap1 << 14 

Flags 型は、QFlags<Flag> の typedef です。これは、Flag 値の OR 組み合わせを格納します。

enum QRhiTexture::Format

テクスチャ形式を指定します。QRhi::isTextureFormatSupported() も参照してください。また、QRhiTexture::sRGB が設定されている場合、flags() によって形式が変更される可能性があることに注意してください。

定数値説明
QRhiTexture::UnknownFormat0無効なフォーマットです。これはsetFormat() に渡すことはできません。
QRhiTexture::RGBA814つのコンポーネント、各コンポーネントにつき符号なし正規化8ビット。常にサポートされます。(合計32ビット)
QRhiTexture::BGRA824つの成分、各成分につき符号なし正規化8ビット。(合計32ビット)
QRhiTexture::R831つの成分、符号なし正規化8ビット。(合計8ビット)
QRhiTexture::RG842つのコンポーネント、各コンポーネントごとに符号なし正規化8ビット。(合計16ビット)
QRhiTexture::R1651成分、符号なし正規化16ビット。(合計16ビット)
QRhiTexture::RG1662成分、各成分ごとに符号なし正規化16ビット。(合計32ビット)
QRhiTexture::RED_OR_ALPHA87RedOrAlpha8IsRed の値に応じて、R8と同じか、または成分がアルファにスウィズルされた同様の形式のいずれか。(合計8ビット)
QRhiTexture::RGBA16F84成分、16ビット浮動小数点。(合計64ビット)
QRhiTexture::RGBA32F94成分、32ビット浮動小数点数。(合計128ビット)
QRhiTexture::R16F101成分、16ビット浮動小数点数。(合計16ビット)
QRhiTexture::R32F111成分、32ビット浮動小数点数。(合計32ビット)
QRhiTexture::RGB10A2124成分、符号なし正規化10ビットのR、G、B、および2ビットのアルファ。これはパックされた形式であるため、ネイティブのエンディアンが適用されます。 BGR10A2 形式は存在しないことに注意してください。これは、RGB10A2 が D3D では DXGI_FORMAT_R10G10B10A2_UNORM に、Metal では MTLPixelFormatRGB10A2Unorm に、 Vulkanでは`VK_FORMAT_A2B10G10R10_UNORM_PACK32`、OpenGL (ES)。これは、RGB30オプションの中で唯一普遍的にサポートされているものです。対応するQImage フォーマットは、QImage::Format_BGR30 およびQImage::Format_A2BGR30_Premultiplied です。(合計32ビット)
QRhiTexture::D162116ビット深度(正規化された符号なし整数)
QRhiTexture::D242224ビット深度(正規化された符号なし整数)
QRhiTexture::D24S82324ビット深度(正規化された符号なし整数)、8ビットステンシル
QRhiTexture::D32F2432 ビット深度(32 ビット浮動小数点)
QRhiTexture::D32FS8 (since Qt 6.9)2532ビット深度(32ビット浮動小数点)、8ビットのステンシル、24ビット未使用(合計64ビット)
QRhiTexture::BC126 
QRhiTexture::BC227 
QRhiTexture::BC328 
QRhiTexture::BC429 
QRhiTexture::BC530 
QRhiTexture::BC6H31 
QRhiTexture::BC732 
QRhiTexture::ETC2_RGB833 
QRhiTexture::ETC2_RGB8A134 
QRhiTexture::ETC2_RGBA835 
QRhiTexture::ASTC_4x436 
QRhiTexture::ASTC_5x437 
QRhiTexture::ASTC_5x538 
QRhiTexture::ASTC_6x539 
QRhiTexture::ASTC_6x640 
QRhiTexture::ASTC_8x541 
QRhiTexture::ASTC_8x642 
QRhiTexture::ASTC_8x843 
QRhiTexture::ASTC_10x544 
QRhiTexture::ASTC_10x645 
QRhiTexture::ASTC_10x846 
QRhiTexture::ASTC_10x1047 
QRhiTexture::ASTC_12x1048 
QRhiTexture::ASTC_12x1249 
QRhiTexture::R8UI (since Qt 6.9)171つのコンポーネント、符号なし8ビット。(合計8ビット)
QRhiTexture::R32UI (since Qt 6.9)181成分、符号なし32ビット。(合計32ビット)
QRhiTexture::RG32UI (since Qt 6.9)192つの成分、符号なし32ビット。(合計64ビット)
QRhiTexture::RGBA32UI (since Qt 6.9)204つの構成要素、符号なし32ビット。(合計128ビット)
QRhiTexture::R8SI (since Qt 6.10)131つの構成要素、符号付き8ビット。(合計8ビット)
QRhiTexture::R32SI (since Qt 6.10)141 成分、符号付き 32 ビット。(合計 32 ビット)
QRhiTexture::RG32SI (since Qt 6.10)152つの構成要素、符号付き32ビット。(合計64ビット)
QRhiTexture::RGBA32SI (since Qt 6.10)164つの構成要素、符号付き32ビット。(合計128ビット)

メンバ関数のドキュメント

int QRhiTexture::arrayRangeLength() const

setArrayRange() が呼び出された際に公開された配列範囲のサイズを返します。

setArrayRange()も参照してください 。

int QRhiTexture::arrayRangeStart() const

setArrayRange() が呼び出された際の最初の配列レイヤーを返します。

setArrayRange()も参照してください 。

int QRhiTexture::arraySize() const

テクスチャ配列のサイズを返します。

setArraySize()も参照してください 。

[pure virtual] bool QRhiTexture::create()

対応するネイティブグラフィックスリソースを作成します。以前にdestroy() を呼び出さずに create() が実行され、すでにリソースが存在する場合、まず暗黙的にdestroy() が呼び出されます。

成功した場合はtrue を返し、グラフィックス操作が失敗した場合はfalse を返します。戻り値にかかわらず、destroy()の呼び出しは常に安全です。

[virtual] bool QRhiTexture::createFrom(QRhiTexture::NativeTexture src)

create() と似ていますが、新しいネイティブテクスチャが作成されない点が異なります。その代わりに、src で指定されたネイティブテクスチャリソースが使用されます。

これにより、外部のグラフィックスエンジンから既存のネイティブテクスチャオブジェクト(グラフィックスAPIに応じて、同じデバイスまたは共有コンテキストに属している必要がある)をインポートすることができます。

指定された既存のネイティブテクスチャオブジェクトが、非所有型のQRhiTexture として正常にラップされた場合、true を返します。

注: format()、pixelSize()、sampleCount()、およびflags() は、依然として正しく設定する必要があります。QRhi::newTexture() に誤ったサイズやその他の値を渡し、その後、ネイティブテクスチャオブジェクトだけでそのような値を推測できると期待して createFrom() を呼び出すことは誤りであり、問題を引き起こします。

注: QRhiTexture は テクスチャオブジェクトの所有権を取得しません。destroy()は、オブジェクトや関連するメモリを解放しません。

この操作の逆、つまり `QRhiTexture` で作成されたネイティブテクスチャオブジェクトを外部エンジンに公開することは、`nativeTexture()` によって可能です。

注: 3D テクスチャ、テクスチャ配列オブジェクト、または OpenGL ES での外部テクスチャをインポートする場合 、この関数を呼び出す前に、setFlags() を通じて対応するフラグ(ThreeDimensional 、TextureArray 、ExternalOES )を設定することが特に重要です。

int QRhiTexture::depth() const

3Dテクスチャの深度を返します。

setDepth()も参照してください 。

QRhiTexture::Flags QRhiTexture::flags() const

テクスチャフラグを返します。

setFlags()も参照してください 。

QRhiTexture::Format QRhiTexture::format() const

テクスチャ形式を返します。

setFormat()も参照してください 。

[virtual] QRhiTexture::NativeTexture QRhiTexture::nativeTexture()

このテクスチャの基盤となるネイティブリソースを返します。バックエンドが基盤となるネイティブリソースの公開をサポートしていない場合、戻り値は空になります。

createFrom()も参照してください 。

QSize QRhiTexture::pixelSize() const

サイズをピクセル単位で返します。

setPixelSize()も参照してください 。

[since 6.8] QRhiTexture::ViewFormat QRhiTexture::readViewFormat() const

テクスチャのサンプリングに使用されるビューフォーマットを返します。この関数が呼び出されない場合、ビューフォーマットはformat() と同じであるとみなされます。

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

setReadViewFormat()も参照してください 。

[override virtual] QRhiResource::Type QRhiTexture::resourceType() const

QRhiResource::resourceType() const を再実装します。

リソースの型を返します。

int QRhiTexture::sampleCount() const

サンプル数を返します。1 は、マルチサンプルアンチエイリアシングが行われないことを意味します。

setSampleCount()も参照してください 。

void QRhiTexture::setArrayRange(int startIndex, int count)

通常、すべての配列レイヤーが公開されており、sampler2DArray をサンプリングする際、texture() GLSL関数に渡される3番目の座標を通じてレイヤーを選択するのはシェーダー側の責任となります。QRhi::TextureArrayRange がサポートされていると報告されている場合、create()またはcreateFrom()を呼び出す前にsetArrayRange()を呼び出すと、指定された範囲(startIndex から始まるcount 個の要素)のみが選択されます。シェーダーのロジックは、この点を考慮して記述することができます。

QRhi::TextureArrayRangeも参照してください 。

void QRhiTexture::setArraySize(int arraySize)

テクスチャ「arraySize 」を設定します。

arraySize()も参照してください 。

void QRhiTexture::setDepth(int depth)

3Dテクスチャのdepth を設定します。

depth()も参照してください 。

void QRhiTexture::setFlags(QRhiTexture::Flags f)

テクスチャフラグを「f 」に設定します。

flags()も参照してください 。

void QRhiTexture::setFormat(QRhiTexture::Format fmt)

要求されたテクスチャ形式をfmt に設定します。

注: 設定された値は 、次にcreate()が呼び出されたとき、つまり基になるグラフィックスリソースが(再)作成されたときにのみ反映されます。それ以外の場合、新しい値を設定しても意味がなく、状態の不整合を招く可能性があるため、避ける必要があります。

format()も参照してください 。

[virtual] void QRhiTexture::setNativeLayout(int layout)

Vulkanなどの一部のグラフィックスAPIでは、そのAPIを直接使用するカスタムレンダリングコードを統合する際、画像のレイアウトに関して特別な配慮が必要です。この関数を使用すると、ネイティブのレンダリングコマンド実行後に、QRhiTexture が参照する画像がlayout のどの位置にあるかを指定することができます。

例えば、QRhiCommandBuffer::beginExternal() とQRhiCommandBuffer::endExternal() で囲まれたコードブロック内で、Vulkan を使用してQRhiTexture の VkImage に直接レンダリングし、その後、QRhi ベースのレンダリングパスでその画像をテクスチャサンプリングに利用する場合を考えてみましょう。画像レイアウトの遷移が不正確になる可能性を回避するために、この関数を使用して、前述のコードブロックに記録されたコマンドが完了した時点での画像レイアウトを指定することができます。

この関数の呼び出しは、QRhiCommandBuffer::endExternal() の実行後、かつ続くQRhiCommandBuffer::beginPass() の実行前に行われる場合にのみ意味を持ちます。

基盤となるグラフィックスAPIが画像レイアウトの概念を公開していないQRhi バックエンドでは、この関数は効果を持ちません。

注: Vulkanでは 、layout は `VkImageLayout` です。Direct 3D 12 では、layout は `D3D12_RESOURCE_STATES` のビットで構成される値です。

void QRhiTexture::setPixelSize(const QSize &sz)

テクスチャサイズ(ピクセル単位)をsz に設定します。

注: 設定された値は 、次にcreate()が呼び出されたとき、つまり基盤となるグラフィックリソースが(再)作成されたときにのみ反映されます。それ以外の場合、新しい値を設定しても意味がなく、状態の不整合を招く可能性があるため、避ける必要があります。これは他のすべてのセッターについても同様です。

pixelSize()も参照してください 。

[since 6.8] void QRhiTexture::setReadViewFormat(const QRhiTexture::ViewFormat &fmt)

シェーダーリソースのビュー形式(またはテクスチャのサンプリングに使用されるビューの形式)を「fmt 」に設定します。デフォルトでは、テクスチャ自体と同じ形式(およびsRGB設定)が使用されるため、ほとんどの場合、この関数を呼び出す必要はありません。

この設定は、QRhi::TextureViewFormat 機能がサポートされていると報告されている場合にのみ反映されます。

注:この 機能は、シェーダーの読み取り処理において暗黙的な sRGB 変換を実行するか否かを制御するために、非 sRGB と sRGB 間の「キャスト」を可能にするために提供されています。その他の種類のキャストについては、機能する場合と機能しない場合があります。

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

readViewFormat()も参照してください 。

void QRhiTexture::setSampleCount(int s)

サンプル数を `s` に設定します。

sampleCount()も参照してください 。

[since 6.8] void QRhiTexture::setWriteViewFormat(const QRhiTexture::ViewFormat &fmt)

レンダリングターゲットのビュー形式をfmt に設定します。デフォルトでは、テクスチャ自体と同じ形式(およびsRGB設定)が使用されるため、ほとんどの場合、この関数を呼び出す必要はありません。

書き込みビュー形式を指定する一般的なユースケースの一つとして、VulkanやDirect 3Dなどの3D APIでsRGB形式を使用している(我々の制御外の)外部から提供されたテクスチャを扱う場合が挙げられます。この場合、レンダリングエンジンは、シェーディングパイプラインの最終段階で線形化およびsRGBへの変換を処理する準備がすでに整っています。 この場合、そのようなテクスチャにレンダリングする際に求められるのは、同じフォーマット(ただしsRGBではない)を持つレンダリングターゲットビュー(例:VkImageView)です。 (例えば、OpenXR実装からVK_FORMAT_R8G8B8A8_SRGBテクスチャを取得した場合、 レンダリングエンジンのパイプラインがそれを必要とする場合、そのテクスチャへのレンダリングはVK_FORMAT_R8G8B8A8_UNORMビューを使用して行うべきである可能性が高い。この例では、フォーマットがQRhiTexture::RGBA8 で、srgb がfalse に設定されたViewFormat を引数として、この関数を呼び出すことになる)。

この設定は、QRhi::TextureViewFormat 機能がサポートされていると報告された場合にのみ考慮されます。

注:この 機能は 、シェーダーの書き込み処理において暗黙的な sRGB 変換を実行しない、あるいは実行するようにするため、sRGB 以外の色空間と sRGB 間の「キャスト」を可能にするために提供されています。その他の種類のキャストについては、機能する場合もあれば機能しない場合もあります。

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

writeViewFormat()も参照してください 。

[since 6.8] QRhiTexture::ViewFormat QRhiTexture::writeViewFormat() const

テクスチャへの書き込み時、および画像の読み込み/保存時に使用されるビュー形式を返します。この関数が呼び出されない場合、ビュー形式はformat() と同じであるとみなされます。

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

setWriteViewFormat()も参照してください 。

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