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 프로퍼티에 할당된 텍스처 데이터의 색상 형식을 반환합니다.
Constant | 값 | 설명 |
---|---|---|
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 | 색상 형식은 32비트 플로트 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 | 컬러 포맷은 컬러 채널이 하나인 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
을 제외한 모든 형식이 런타임에 지원되는 것은 아니며, 이는 사용 중인 백엔드 및 사용 중인 하드웨어에 따라 달라집니다.
참고: 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 의 내용은 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.