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 프로퍼티에 할당된 텍스처 데이터의 색상 형식을 반환합니다.

Constant설명
QQuick3DTextureData::None0색상 형식이 정의되지 않았습니다.
QQuick3DTextureData::RGBA81색상 형식은 R, G, B 및 알파 채널에서 8비트 정수로 간주됩니다.
QQuick3DTextureData::RGBA16F2색상 형식은 R,G,B 및 알파 채널에서 16비트 실수로 간주됩니다.
QQuick3DTextureData::RGBA32F3색상 형식은 R, G, B 및 알파 채널에서 32비트 부동 소수점으로 간주됩니다.
QQuick3DTextureData::RGBE84색상 형식은 R, G, B 채널에서 8비트 만티사 및 8비트 공유 지수로 간주됩니다.
QQuick3DTextureData::R85색상 형식은 R 채널에서 8비트 정수로 간주됩니다.
QQuick3DTextureData::R166색상 형식은 R 채널에서 16비트 정수로 간주됩니다.
QQuick3DTextureData::R16F7색상 형식은 R 채널에서 16비트 부동 소수점으로 간주됩니다.
QQuick3DTextureData::R32F8색상 형식은 32비트 플로트 R 채널로 간주됩니다.
QQuick3DTextureData::BC19색상 형식은 R, G, B 및 알파 채널이 있는 BC1 압축 형식으로 간주됩니다.
QQuick3DTextureData::BC210색상 형식은 R, G, B 및 알파 채널이 있는 BC2 압축 형식으로 간주됩니다.
QQuick3DTextureData::BC311컬러 포맷은 R, G, B 및 알파 채널이 있는 BC3 압축 포맷으로 간주됩니다.
QQuick3DTextureData::BC412컬러 포맷은 컬러 채널이 하나인 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 을 제외한 모든 형식이 런타임에 지원되는 것은 아니며, 이는 사용 중인 백엔드 및 사용 중인 하드웨어에 따라 달라집니다.

참고: RGBE 는 내부적으로 RGBA8 로 표시되지만, lightProbe 또는 스카이박스 텍스처로 사용될 때는 설명된 대로 해석됩니다.

참고: 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.