PySide6.QtQuick3D.QQuick3DTextureData¶
- class QQuick3DTextureData¶
用于定义自定义纹理数据的基类。更多…
概要¶
方法¶
def
__init__()
def
depth()
def
format()
def
setDepth()
def
setFormat()
def
setSize()
def
setTextureData()
def
size()
def
textureData()
信号¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
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 中,默认方法是借助构建系统使用自动注册。现在,
.pro
文件可以包含以下内容,而不是调用 qmlRegisterType: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 { } } }
- class Format¶
返回分配给
textureData
属性的纹理数据的颜色格式。常量
描述
QQuick3DTextureData.None
颜色格式未定义
QQuick3DTextureData.RGBA8
颜色格式被视为R、G、B和alpha通道中的8位整数。
QQuick3DTextureData.RGBA16F
颜色格式被视为R、G、B和alpha通道中的16位浮点数。
QQuick3DTextureData.RGBA32F
颜色格式被视为R、G、B和alpha通道中的32位浮点数。
QQuick3DTextureData.RGBE8
颜色格式被视为R、G和B通道中的8位尾数和8位共享指数。
QQuick3DTextureData.R8
颜色格式被视为R通道中的8位整数。
QQuick3DTextureData.R16
颜色格式被视为R通道中的16位整数。
QQuick3DTextureData.R16F
颜色格式被视为R通道中的16位浮点数。
QQuick3DTextureData.R32F
颜色格式被视为32位浮点R通道。
QQuick3DTextureData.BC1
颜色格式被视为带有R、G、B和alpha通道的BC1压缩格式。
QQuick3DTextureData.BC2
颜色格式被视为带有R、G、B和alpha通道的BC2压缩格式。
QQuick3DTextureData.BC3
颜色格式被视为带有R、G、B和alpha通道的BC3压缩格式。
QQuick3DTextureData.BC4
颜色格式被视为具有一个颜色通道的BC4压缩格式。
QQuick3DTextureData.BC5
颜色格式被视为具有两个颜色通道的BC5压缩格式。
QQuick3DTextureData.BC6H
颜色格式被视为具有三个高动态范围颜色通道的BC6H压缩格式。
QQuick3DTextureData.BC7
颜色格式被视为带有R、G、B和alpha通道的BC7压缩格式。
QQuick3DTextureData.DXT1_RGBA
颜色格式被视为具有R、G、B和alpha通道的DXT1压缩格式。
QQuick3DTextureData.DXT1_RGB
颜色格式被视为具有R、G和B通道的DXT1压缩格式。
QQuick3DTextureData.DXT3_RGBA
颜色格式被视为具有R、G、B和alpha通道的DXT3压缩格式。
QQuick3DTextureData.DXT5_RGBA
颜色格式被视为具有R、G、B和alpha通道的DXT5压缩格式。
QQuick3DTextureData.ETC2_RGB8
颜色格式被视为用于RGB888数据的ETC2压缩格式
QQuick3DTextureData.ETC2_RGB8A1
颜色格式被视为用于RGBA数据的ETC2压缩格式,其中alpha为1位。
QQuick3DTextureData.ETC2_RGBA8
颜色格式被视为带有RGBA8888数据的ETC2压缩格式。
QQuick3DTextureData.ASTC_4x4
颜色格式被视为具有4x4块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_5x4
颜色格式被视为具有5x4块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_5x5
颜色格式被视为具有5x5块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_6x5
颜色格式被视为具有6x5块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_6x6
颜色格式被视为具有6x6块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_8x5
颜色格式被视为具有8x5块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_8x6
颜色格式被视为具有8x6块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_8x8
颜色格式被视为具有8x8块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_10x5
颜色格式被视为具有10x5块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_10x6
颜色格式被视为具有10x6块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_10x8
颜色格式被视为具有10x8块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_10x10
颜色格式被视为具有10x10块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_12x10
颜色格式被视为具有12x10块足迹的ASTC压缩格式。
QQuick3DTextureData.ASTC_12x12
颜色格式被视为具有12x12块足迹的ASTC压缩格式。
注意
除了
RGBA8
之外,并非所有格式在运行时都受支持,因为这取决于所使用的后端以及所使用的硬件。注意
RGBE
在内部表示为RGBA8
,但在用作 lightProbe 或 skybox 纹理时,会按照描述进行解释。注意
使用值
None
将假定默认值为RGBA8
- __init__([parent=None])¶
- Parameters:
父级 –
QQuick3DObject
- depth()¶
- Return type:
整数
返回纹理数据的深度(以像素为单位)。
另请参阅
返回纹理数据的格式。
另请参阅
- hasTransparency()¶
- Return type:
布尔
如果纹理数据具有透明度,则返回
true
。默认值为
false
。另请参阅
- setDepth(depth)¶
- Parameters:
深度 – int
设置纹理数据的
depth
(深度),单位为像素。将深度设置为大于0的值意味着纹理将被处理为3D纹理。另请参阅
设置纹理数据的
format
。默认格式是 /c RGBA8
另请参阅
- setHasTransparency(hasTransparency)¶
- Parameters:
hasTransparency – 布尔值
如果纹理数据具有非不透明值的活动 alpha 通道,请将
hasTransparency
设置为 true。这被引擎用作一种优化,以便对于确实支持alpha通道的格式,不需要检查每个值是否为非不透明值。
另请参阅
设置纹理数据的
size
(以像素为单位)。另请参阅
- setTextureData(data)¶
- Parameters:
数据 –
QByteArray
设置纹理数据。
data
的内容必须符合size
和format
属性,因为后端会尝试上传并使用这些数据,就像它是一个具有特定大小和格式的纹理一样。如果有任何偏差,结果可能会在纹理渲染不正确或可能导致崩溃之间。另请参阅
返回纹理数据的像素大小。
另请参阅
- textureData()¶
- Return type:
返回由此项目定义的当前纹理数据。
另请参阅
- textureDataNodeDirty()¶