QQuick3DTextureData Class

カスタムテクスチャデータを定義するための基底クラス。詳細...

Header: #include <QQuick3DTextureData>
Since: Qt 6.0
In QML: TextureData
Inherits: QQuick3DObject

パブリックタイプ

enum Format { None, RGBA8, RGBA16F, RGBA32F, RGBE8, …, ASTC_12x12 }

パブリック関数

int depth() const
QQuick3DTextureData::Format format() const
bool hasTransparency() const
void setDepth(int depth)
void setFormat(QQuick3DTextureData::Format format)
void setHasTransparency(bool hasTransparency)
void setSize(const QSize &size)
void setTextureData(const QByteArray &data)
QSize size() const
const QByteArray textureData() const

詳細な説明

QQuick3DTextureDataクラスは、Qt Quick 3DシーンのTexture 、カスタムテクスチャデータを指定するために使用できます。

厳密には必須ではありませんが、典型的な使用方法はこのクラスを継承することです。このサブクラスは、型システムに登録することで QML に公開されます。TexturetextureData プロパティは、登録された型のインスタンスを参照するように設定できます。

実装例

class CustomTextureData : public QQuick3DTextureData
{
    Q_OBJECT
    ... properties ...

public:
    CustomTextureData() { regenerateTextureData(); }

    void setProperty(...)
    {
        // Change relevant internal data.
        // ...

        // Update the texture data
        regenerateTextureData();

        // Finally, trigger an update. This is relevant in case nothing else
        // is changed in the scene; this way we make sure a new frame will
        // be rendered
        update();
    }
private:
    void regenerateTextureData()
    {
        QByteArray textureData;
        textureData = generateTextureData();
        setTextureData(textureData);
        setSize(QSize(256, 256));
        setFormat(QQuick3DTextureData::Format::RGBA8)
        setHasTransparency(true);
    }
};

このクラスをQMLの型として登録し、Texture

Qt 5 では、型の登録はqmlRegisterType で行われました:

qmlRegisterType<MyCustomTextureData>("Example", 1, 0, "MyCustomTextureData");

Qt 6では、ビルドシステムによる自動登録がデフォルトになっています。qmlRegisterType を呼び出す代わりに、.pro ファイルを含むことができます:

CONFIG += qmltypes
QML_IMPORT_NAME = Example
QML_IMPORT_MAJOR_VERSION = 1

CMakeでは、自動登録がデフォルトの動作なので、基本的なQMLモジュールのセットアップ以上の特別な設定は必要ありません:

qt_add_qml_module(application
    URI Example
    VERSION 1.0
)

クラスの実装はQML_NAMED_ELEMENT を追加します:

class CustomTextureData : public QQuick3DTextureData
{
    Q_OBJECT
    QML_NAMED_ELEMENT(MyCustomTextureData)
    ...
};

その後、QMLコードはカスタム型を使用することができます:

import Example 1.0

Model {
    source: "#Cube"
    materials: [
        DefaultMaterial {
            diffuseMap: diffuseMapCustomTexture
        }
    ]
    Texture {
        id: diffuseMapCustomTexture
        textureData: MyCustomTextureData { }
    }
}

メンバ型ドキュメント

enum QQuick3DTextureData::Format

textureData プロパティに割り当てられたテクスチャデータのカラーフォーマットを返します。

定数説明
QQuick3DTextureData::None0カラーフォーマットが定義されていない
QQuick3DTextureData::RGBA81カラーフォーマットは、R,G,B,アルファチャンネルの8ビット整数とみなされます。
QQuick3DTextureData::RGBA16F2色形式は、R,G,B およびアルファチャンネルでは 16 ビット float と見なされます。
QQuick3DTextureData::RGBA32F3色形式は、 R ・ G ・ B ・ alpha チ ャ ン ネルにおいて 32 ビ ッ ト float と 見な さ れます。
QQuick3DTextureData::RGBE84色形式は、R,G,B チャネルでは 8 ビ ッ ト の仮数、 8 ビ ッ ト の共有指数 と 見な さ れます。
QQuick3DTextureData::R85色形式は、R チャネルでは 8 ビットの整数とみなされる。
QQuick3DTextureData::R166色形式は R チャンネルでは 16 ビット整数とみなされる。
QQuick3DTextureData::R16F7R チャネルでは 16 ビット float とみなす。
QQuick3DTextureData::R32F8色形式を 32 ビット float とみなす (R チャネル)。
QQuick3DTextureData::BC19R、G、B、アルファチャンネルを持つ BC1 圧縮形式とみなす。
QQuick3DTextureData::BC210色形式は、R、G、B、アルファチャンネルを持つ BC2 圧縮形式とみなす。
QQuick3DTextureData::BC311カラーフォーマットは、R、G、B、アルファチャンネルを持つ BC3 圧縮フォーマットとみなされる。
QQuick3DTextureData::BC412カラーフォーマットは、1 つのカラーチャンネルを持つ BC4 圧縮フォーマットとみなされる。
QQuick3DTextureData::BC513カラーフォーマットは、2 つのカラーチャンネルを持つ BC5 圧縮フォーマットとみなされる。
QQuick3DTextureData::BC6H14カラーフォーマットは、3つのハイダイナミックレンジカラーチャンネルを持つBC6H圧縮フォーマットとみなされる。
QQuick3DTextureData::BC715カラーフォーマットは、R、G、B、アルファチャンネルを持つBC7圧縮フォーマットとみなされる。
QQuick3DTextureData::DXT1_RGBA16カラーフォーマットは、R、G、B、アルファチャンネルを持つDXT1圧縮フォーマットとみなされる。
QQuick3DTextureData::DXT1_RGB17カラーフォーマットはR、G、Bチャンネルを持つDXT1圧縮フォーマットとみなされる。
QQuick3DTextureData::DXT3_RGBA18カラーフォーマットはR、G、B、アルファチャンネルを持つDXT3圧縮フォーマットとみなされる。
QQuick3DTextureData::DXT5_RGBA19カラーフォーマットは、R、G、B、アルファチャンネルを持つDXT5圧縮フォーマットと見なされます。
QQuick3DTextureData::ETC2_RGB820カラーフォーマットは、RGB888データのETC2圧縮フォーマットとみなされます。
QQuick3DTextureData::ETC2_RGB8A121アルファが1ビットのRGBAデータでは、カラーフォーマットはETC2圧縮フォーマットとみなされます。
QQuick3DTextureData::ETC2_RGBA822カラーフォーマットは、RGBA8888データのETC2圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_4x423カラーフォーマットは4x4ブロックフットプリントのASTC圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_5x424カラーフォーマットは5x4ブロックフットプリントのASTC圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_5x525カラーフォーマットは、5x5 ブロックフットプリントの ASTC 圧縮フォーマットとみなされる。
QQuick3DTextureData::ASTC_6x526カラーフォーマットは、6x5 ブロックフットプリントの ASTC 圧縮フォーマットとみなされる。
QQuick3DTextureData::ASTC_6x627カラーフォーマットは、6x6 ブロックフットプリントの ASTC 圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_8x528カラーフォーマットは 8x5 ブロックフットプリントの ASTC 圧縮フォーマットとみなされる。
QQuick3DTextureData::ASTC_8x629カラーフォーマットは、8x6 ブロックフットプリントの ASTC 圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_8x830カラーフォーマットは、8x8 ブロックフットプリントの ASTC 圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_10x531カラーフォーマットは、10x5 ブロックフットプリントの ASTC 圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_10x632カラーフォーマットは、10x6 ブロックフットプリントの ASTC 圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_10x833カラーフォーマットは、10x8 ブロックフットプリントの ASTC 圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_10x1034カラーフォーマットは、10x10 ブロックフットプリントの ASTC 圧縮フォーマットとみなされます。
QQuick3DTextureData::ASTC_12x1035カラーフォーマットは、12x10 ブロックフットプリントの ASTC 圧縮フォーマットとみなされる。
QQuick3DTextureData::ASTC_12x1236カラーフォーマットは、12x12 ブロックフットプリントの ASTC 圧縮フォーマットとみなされます。

注: RGBA8 を除き、どのバックエンドが使用されているか、またどのハードウェアが使用されているかに依存するため、すべてのフォーマットがランタイムでサポートされているわけではない。

Note: RGBE は、内部的にはRGBA8 として表現されますが、lightProbe または skybox テクスチャとして使用される場合は、説明されているように解釈されます。

注意: None を使用すると、デフォルト値であるRGBA8

メンバ関数ドキュメント

int QQuick3DTextureData::depth() const

テクスチャデータの深さをピクセル単位で返します。

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

QQuick3DTextureData::Format QQuick3DTextureData::format() const

テクスチャデータのフォーマットを返します。

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

bool QQuick3DTextureData::hasTransparency() const

テクスチャデータに透明度がある場合はtrue を返します。

デフォルト値はfalse です。

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

void QQuick3DTextureData::setDepth(int depth)

テクスチャデータのdepth をピクセル単位で設定します。深度を 0 以上に設定すると、テクスチャは 3D テクスチャとして扱われます。

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

void QQuick3DTextureData::setFormat(QQuick3DTextureData::Format format)

テクスチャデータのformat を設定します。

デフォルトのフォーマットは /c RGBA8 です。

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

void QQuick3DTextureData::setHasTransparency(bool hasTransparency)

テクスチャデータに不透明でない値を持つアクティブなアルファチャンネルがある場合、hasTransparency を true に設定します。

これはエンジンによる最適化として使用され、アルファチャンネルをサポートするフォーマットでは、不透明でない値について各値をチェックする必要がないようにします。

hasTransparency()も参照してください

void QQuick3DTextureData::setSize(const QSize &size)

テクスチャデータのsize をピクセル単位で設定します。

size() も参照

void QQuick3DTextureData::setTextureData(const QByteArray &data)

テクスチャデータを設定します。data の内容は、sizeformat のプロパティを尊重する必要があります。バックエンドは、サイズとフォーマットのテクスチャであるかのようにデータをアップロードして使用しようとします。

textureData()も参照してください

QSize QQuick3DTextureData::size() const

テクスチャデータのサイズをピクセル単位で返します。

setSize() も参照

const QByteArray QQuick3DTextureData::textureData() const

この項目で定義されている現在のテクスチャデータを返します。

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

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