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()も参照してください

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