ImageTextureLayered

继承: TextureLayered < Texture < Resource < RefCounted < Object

派生: Cubemap, CubemapArray, Texture2DArray

包含多个ImageTexture数据的纹理类型的基类。每个图像的大小和格式相同。

描述

Texture2DArrayCubemapCubemapArray的基类。不能直接使用,但包含访问派生资源类型所需的所有函数。另请参阅Texture3D

方法

Error

create_from_images(images: Array[Image])

void

update_layer(image: Image, layer: int)


方法说明

Error create_from_images(images: Array[Image]) 🔗

从一个Image数组中创建一个ImageTextureLayered。关于预期的数据格式,请参阅Image.create()。第一个图像决定宽度、高度、图像格式和mip映射设置。其他图像必须具有相同的宽度、高度、图像格式和mip映射设置。

每个Image代表一个layer

#填充具有不同颜色的图像。
var images = []
const LAYERS = 6
for i in LAYERS:
    var image = Image.create_empty(128, 128, false, Image.FORMAT_RGB8)
    if i % 3 == 0:
        image.fill(Color.RED)
    elif i % 3 == 1:
        image.fill(Color.GREEN)
    else:
        image.fill(Color.BLUE)
    images.push_back(image)

# 创建并保存2D纹理阵列。 图像阵列必须至少具有1张图像。
var texture_2d_array = Texture2DArray.new()
texture_2d_array.create_from_images(images)
ResourceSaver.save(texture_2d_array, "res://texture_2d_array.res", ResourceSaver.FLAG_COMPRESS)

# 创建并保存一个cubemap。 图像阵列必须完全具有6张图像。
CUBEMAP的图像以此顺序指定X+X-Y+Y-Z+Z-
#(在i3d的坐标系统中y+是“向上”,z-是“向前”)。
var cubemap = Cubemap.new()
cubemap.create_from_images(images)
ResourceSaver.save(cubemap, "res://cubemap.res", ResourceSaver.FLAG_COMPRESS)

# 创建并保存一个Cubemap数组。 图像阵列必须具有6张图像的倍数。
#每个Cubemap的图像以此顺序指定X+X-Y+Y-Z+Z-
#(在i3d的坐标系统中y+是“向上”,z-是“向前”)。
var cubemap_array = CubemapArray.new()
cubemap_array.create_from_images(images)
ResourceSaver.save(cubemap_array, "res://cubemap_array.res", ResourceSaver.FLAG_COMPRESS)

void update_layer(image: Image, layer: int) 🔗

用这个新图像替换给定layer的现有Image数据。

给定的Image必须具有与其余引用图像相同的宽度、高度、图像格式和mipmap标志。

如果图像格式不受支持,它将被解压缩并转换为类似且受支持的Format

更新是即时的:它与绘图同步。