ProceduralTextureData QML Type
允许通过 QML 创建并为TextureData 赋值。更多...
| Import Statement: | import QtQuick3D.Helpers |
| Since: | Qt 6.6 |
| Inherits: |
属性
- depth : int
- format : enumeration
- hasTransparency : bool
- height : int
- textureData : ArrayBuffer
- width : int
详细说明
ProceduralTextureData 是一种辅助类型,用于在 QML 中创建 `TextureData `。`TextureData ` 组件是抽象类,通常通过 C++ 创建。借助 `ProceduralTextureData`,可以在 QML 中为 `TextureData ` 填充数据。
ProceduralTextureData {
id: dynamicTextureData
property color color1: "red"
property color color2: "black"
width: 32
height: 32
hasTransparency: false
format: TextureData.RGBA8
textureData: generateTextureData(color1, color2)
function generateTextureData(newColor1: color, newColor2 : color) : ArrayBuffer {
let dataBuffer = new ArrayBuffer(width * height * 4)
let data = new Uint8Array(dataBuffer)
// Create a checkered pattern using newColor1 and newColor2
for (let x = 0; x < width; x++) {
for (let y = 0; y < height; y++) {
let index = (x + y * width) * 4
let color = (x % 2 === y % 2) ? newColor1 : newColor2
data[index + 0] = color.r * 255
data[index + 1] = color.g * 255
data[index + 2] = color.b * 255
data[index + 3] = 255
}
}
return dataBuffer
}
}在上述代码片段中,使用 generateTextureData 函数通过颜色 color1 和 color2 生成棋盘格图案。通过将生成的数据填入 ArrayBuffer,即可填充TextureData 的textureData 属性。
属性文档
depth : int [default: 0]
该属性表示纹理数据的深度(以像素为单位)。将深度设置为大于 0 表示该纹理将被作为 3D 纹理处理。
format : enumeration [default: TextureData.RGBA8]
该属性存储纹理数据的格式。
| 常量 | 描述 |
|---|---|
TexureData.None | 颜色格式未定义 |
TexureData.RGBA8 | 颜色格式被视为 R、G、B 和 alpha 通道中的 8 位整数。 |
TexureData.RGBA16F | 颜色格式在 R、G、B 和 alpha 通道中被视为 16 位浮点数。 |
TexureData.RGBA32F | 颜色格式在 R、G、B 和 alpha 通道中被视为 32 位浮点数。 |
TexureData.RGBE8 | 该颜色格式被视为 R、G 和 B 通道中的 8 位尾数和 8 位共享指数。 |
TexureData.R8 | 该颜色格式在 R 通道中被视为 8 位整数。 |
TexureData.R16 | 该颜色格式在 R 通道中被视为 16 位整数。 |
TexureData.R16F | 该颜色格式在 R 通道中被视为 16 位浮点数。 |
TexureData.R32F | 该颜色格式被视为 R 通道为 32 位浮点数。 |
TexureData.BC1 | 该颜色格式被视为具有 R、G、B 和 alpha 通道的 BC1 压缩格式。 |
TexureData.BC2 | 该颜色格式被视为具有 R、G、B 和 alpha 通道的 BC2 压缩格式。 |
TexureData.BC3 | 该颜色格式被视为具有 R、G、B 和 alpha 通道的 BC3 压缩格式。 |
TexureData.BC4 | 该颜色格式被视为具有一个颜色通道的 BC4 压缩格式。 |
TexureData.BC5 | 该颜色格式被视为具有两个颜色通道的 BC5 压缩格式。 |
TexureData.BC6H | 该颜色格式被视为具有三个高动态范围颜色通道的 BC6H 压缩格式。 |
TexureData.BC7 | 该颜色格式被视为具有 R、G、B 和 alpha 通道的 BC7 压缩格式。 |
TexureData.DXT1_RGBA | 该颜色格式被视为带有 R、G、B 和 alpha 通道的 DXT1 压缩格式。 |
TexureData.DXT1_RGB | 该颜色格式被视为具有 R、G 和 B 通道的 DXT1 压缩格式。 |
TexureData.DXT3_RGBA | 该颜色格式被视为具有 R、G、B 和 alpha 通道的 DXT3 压缩格式。 |
TexureData.DXT5_RGBA | 该颜色格式被视为具有 R、G、B 和 alpha 通道的 DXT5 压缩格式。 |
TexureData.ETC2_RGB8 | 该颜色格式被视为适用于 RGB888 数据的 ETC2 压缩格式 |
TexureData.ETC2_RGB8A1 | 该颜色格式被视为适用于 RGBA 数据的 ETC2 压缩格式,其中 alpha 为 1 位。 |
TexureData.ETC2_RGBA8 | 该颜色格式被视为包含 RGBA8888 数据的 ETC2 压缩格式。 |
TexureData.ASTC_4x4 | 该颜色格式被视为具有 4x4 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_5x4 | 该颜色格式被视为具有 5x4 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_5x5 | 该颜色格式被视为采用 5x5 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_6x5 | 该颜色格式被视为具有 6x5 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_6x6 | 该颜色格式被视为具有 6x6 块占用的 ASTC 压缩格式。 |
TexureData.ASTC_8x5 | 该颜色格式被视为具有 8x5 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_8x6 | 该颜色格式被视为具有 8x6 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_8x8 | 该颜色格式被视为具有 8x8 块占用的 ASTC 压缩格式。 |
TexureData.ASTC_10x5 | 该颜色格式被视为具有 10x5 块占用的 ASTC 压缩格式。 |
TexureData.ASTC_10x6 | 该颜色格式被视为具有 10x6 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_10x8 | 该颜色格式被视为具有 10x8 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_10x10 | 该颜色格式被视为具有 10x10 块占用空间的 ASTC 压缩格式。 |
TexureData.ASTC_12x10 | 该颜色格式被视为具有 12x10 块占用的 ASTC 压缩格式。 |
TexureData.ASTC_12x12 | 该颜色格式被视为具有 12x12 块占用空间的 ASTC 压缩格式。 注意:除 注意: 注意:使用 |
hasTransparency : bool
该属性表示纹理数据是否具有透明度。
height : int [default: 0]
该属性存储纹理数据的高度(以像素为单位)。
textureData : ArrayBuffer
该属性存储纹理数据。
width : int [default: 0]
该属性存储纹理数据的宽度(以像素为单位)。
© 2026 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.