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