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 = 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::None | 0 | カラーフォーマットが定義されていない |
QQuick3DTextureData::RGBA8 | 1 | カラーフォーマットは、R,G,B,アルファチャンネルの8ビット整数とみなされます。 |
QQuick3DTextureData::RGBA16F | 2 | 色形式は、R,G,B およびアルファチャンネルでは 16 ビット float と見なされます。 |
QQuick3DTextureData::RGBA32F | 3 | 色形式は、 R ・ G ・ B ・ alpha チ ャ ン ネルにおいて 32 ビ ッ ト float と 見な さ れます。 |
QQuick3DTextureData::RGBE8 | 4 | 色形式は、R,G,B チャンネルでは 8 ビ ッ ト の仮数、 8 ビ ッ ト の共有指数 と 見な さ れます。 |
QQuick3DTextureData::R8 | 5 | 色形式は、R チャネルでは 8 ビットの整数とみなされる。 |
QQuick3DTextureData::R16 | 6 | 色形式は R チャンネルでは 16 ビット整数とみなされる。 |
QQuick3DTextureData::R16F | 7 | R チャネルでは 16 ビット float とみなす。 |
QQuick3DTextureData::R32F | 8 | 色形式を 32 ビット float とみなす (R チャネル)。 |
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 圧縮フォーマットとみなされます。 |
注: 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 の内容はsize とformat のプロパティを尊重しなければなりません。バックエンドはデータをサイズとフォーマットのテクスチャであるかのようにアップロードして使用しようとします。
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.