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 から利用可能になります。これにより、Texture のtextureData プロパティを、登録された型のインスタンスを参照するように設定できます。
実装例:
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 = 1CMake では、自動登録がデフォルトの動作であるため、基本的な 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::None | 0 | カラー形式は定義されていません |
QQuick3DTextureData::RGBA8 | 1 | カラーフォーマットは、R、G、B、およびアルファチャネルにおいて 8 ビット整数とみなされます。 |
QQuick3DTextureData::RGBA16F | 2 | R、G、B、およびアルファチャンネルにおいて、カラーフォーマットは 16 ビット浮動小数点数として扱われます。 |
QQuick3DTextureData::RGBA32F | 3 | R、G、B、およびアルファチャンネルにおいて、カラーフォーマットは 32 ビットの浮動小数点数として扱われます。 |
QQuick3DTextureData::RGBE8 | 4 | カラーフォーマットは、R、G、B チャンネルで 8 ビットの仮数、8 ビットの共有指数として扱われます。 |
QQuick3DTextureData::R8 | 5 | R チャンネルでは、カラー形式は 8 ビット整数として扱われます。 |
QQuick3DTextureData::R16 | 6 | R チャンネルでは、カラーフォーマットは 16 ビットの整数とみなされます。 |
QQuick3DTextureData::R16F | 7 | このカラーフォーマットは、R チャンネルにおいて 16 ビット浮動小数点数として扱われます。 |
QQuick3DTextureData::R32F | 8 | このカラーフォーマットは、R チャンネルが 32 ビットの浮動小数点数として扱われます。 |
QQuick3DTextureData::BC1 | 9 | このカラーフォーマットは、R、G、B、およびアルファチャンネルを持つ BC1 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::BC2 | 10 | このカラーフォーマットは、R、G、B、およびアルファチャンネルを持つ BC2 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::BC3 | 11 | このカラーフォーマットは、R、G、B、およびアルファチャンネルを持つ BC3 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::BC4 | 12 | このカラーフォーマットは、1 つのカラーチャンネルを持つ BC4 圧縮フォーマットと見なされます。 |
QQuick3DTextureData::BC5 | 13 | このカラーフォーマットは、2 つのカラーチャンネルを持つ BC5 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::BC6H | 14 | このカラーフォーマットは、3 つの高ダイナミックレンジカラーチャンネルを持つ BC6H 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::BC7 | 15 | このカラーフォーマットは、R、G、B、およびアルファチャンネルを持つ BC7 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::DXT1_RGBA | 16 | このカラーフォーマットは、R、G、B、およびアルファチャンネルを持つ DXT1 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::DXT1_RGB | 17 | このカラーフォーマットは、R、G、B チャンネルを持つ DXT1 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::DXT3_RGBA | 18 | このカラーフォーマットは、R、G、B、およびアルファチャンネルを持つ DXT3 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::DXT5_RGBA | 19 | このカラーフォーマットは、R、G、B、およびアルファチャンネルを持つ DXT5 圧縮フォーマットと見なされます。 |
QQuick3DTextureData::ETC2_RGB8 | 20 | このカラーフォーマットは、RGB888 データ用の ETC2 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ETC2_RGB8A1 | 21 | このカラーフォーマットは、アルファが 1 ビットの RGBA データ用の ETC2 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ETC2_RGBA8 | 22 | このカラーフォーマットは、RGBA8888 データを含む ETC2 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_4x4 | 23 | このカラーフォーマットは、4x4 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_5x4 | 24 | このカラーフォーマットは、5x4 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_5x5 | 25 | このカラーフォーマットは、5x5 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_6x5 | 26 | このカラーフォーマットは、6x5 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_6x6 | 27 | このカラーフォーマットは、6x6 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_8x5 | 28 | このカラーフォーマットは、8x5 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_8x6 | 29 | このカラーフォーマットは、8x6 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_8x8 | 30 | このカラーフォーマットは、8x8 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_10x5 | 31 | このカラーフォーマットは、10x5 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_10x6 | 32 | このカラーフォーマットは、10x6 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_10x8 | 33 | このカラーフォーマットは、10x8 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_10x10 | 34 | このカラーフォーマットは、10x10 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_12x10 | 35 | このカラーフォーマットは、12x10 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 |
QQuick3DTextureData::ASTC_12x12 | 36 | このカラーフォーマットは、12x12 ブロックのフットプリントを持つ ASTC 圧縮フォーマットとみなされます。 注: 注: 注: |
メンバ関数のドキュメント
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 の内容は、size およびformat のプロパティに準拠している必要があります。これは、バックエンドが、そのデータを指定されたサイズおよびフォーマットのテクスチャであるかのようにアップロードして使用しようとするためであり、これに逸脱があると、テクスチャのレンダリングが不正になるか、場合によってはクラッシュする可能性があります。
textureData()も参照してください 。
QSize QQuick3DTextureData::size() const
テクスチャデータのサイズをピクセル単位で返します。
setSize()も参照してください 。
const QByteArray QQuick3DTextureData::textureData() const
この項目で定義されている現在のテクスチャデータを返します。
setTextureData()も参照してください 。
© 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.