ImageTexture

Inherits: Texture < Resource < Reference < Object

基于 Image 图片的 Texture 纹理。

描述

基于图片的纹理,要显示一个图片,必须使用 create_from_image 方法来创建一个 ImageTexture 图片纹理数据:

  1. var texture = ImageTexture.new()
  2. var image = Image.new()
  3. image.load("res://icon.png")
  4. texture.create_from_image(image)
  5. $Sprite.texture = texture

通过这种方式,可以在运行时通过从编辑器内部和外部加载图像来创建纹理。

警告: 最好用 @GDScript.load 加载导入的纹理,而不是使用 Image.load 从文件系统中动态加载它们,因为它可能无法在导出的项目中工作:

  1. var texture = load("res://icon.png")
  2. $Sprite.texture = texture

这是因为图像必须首先作为 StreamTexture 导入才能使用 @GDScript.load 加载。如果您仍然想像任何其他 Resource 一样加载图像文件,请将其作为 Image 资源导入,然后使用 @GDScript.load 方法正常加载它。

但请注意,仍然可以使用 Texture.get_data 方法从导入的纹理中检索图像数据,该方法返回数据的副本:

  1. var texture = load("res://icon.png")
  2. var image : Image = texture.get_data()

ImageTexture 不是直接在编辑器界面中操作的,主要用于通过代码在屏幕上动态渲染图像。如果您需要在编辑器中按程序生成图像,请考虑将图像保存和导入为自定义纹理资源,以实现新的 EditorImportPlugin

注意:由于图形硬件限制,最大纹理尺寸为16384×16384像素。

教程

属性

int

flags

7 (overrides Texture)

float

lossy_quality

0.7

Storage

storage

0

方法

void

create ( int width, int height, Format format, int flags=7 )

void

create_from_image ( Image image, int flags=7 )

Format

get_format ( ) const

Error

load ( String path )

void

set_data ( Image image )

void

set_size_override ( Vector2 size )

枚举

enum Storage:

  • STORAGE_RAW = 0 —- Image 图像的原始储存数据。

  • STORAGE_COMPRESS_LOSSY = 1 —- Image数据是用有损算法压缩的。 你可以用lossy_quality设置存储质量。

  • STORAGE_COMPRESS_LOSSLESS = 2 —- Image数据是用无损算法压缩的。

属性说明

Default

0.7

Setter

set_lossy_storage_quality(value)

Getter

get_lossy_storage_quality()

STORAGE_COMPRESS_LOSSY的存储质量。


Default

0

Setter

set_storage(value)

Getter

get_storage()

存储类型,即原始、有损、或压缩。

方法说明

创建具有widthheight的新ImageTexture

formatFormat中的一个值,flagsFlags的任意组合。


  • void create_from_image ( Image image, int flags=7 )

通过使用 Flags 中的 flags 分配和设置来自 Image 的数据来初始化纹理。根据 Format,可以进行 sRGB 到线性颜色空间的转换。


返回纹理的格式,Format 之一。


从文件路径加载图像,并从中创建一个纹理图片。

注释::该方法已被废弃,并将在Godot 4.0中被删除,请建议使用Image.load()和create_from_image()代替。


  • void set_data ( Image image )

用新的 Image 替换纹理的数据。

注意:纹理必须先用 create_from_image 方法初始化,然后才能更新。新的图像尺寸、格式和多级渐远纹理配置应与现有纹理的图像配置相匹配,否则必须使用 create_from_image 方法重新创建。

如果需要频繁更新纹理,请在 create_from_image 上使用此方法,这比每次为新纹理分配额外内存要快。


  • void set_size_override ( Vector2 size )

将纹理的大小调整为指定的尺寸。