<?xml version="1.0" encoding="UTF-8" ?>
<class name="Texture" inherits="Resource" version="3.3">
	<brief_description>
		Texture for 2D and 3D.
	</brief_description>
	<description>
		A texture works by registering an image in the video hardware, which then can be used in 3D models or 2D [Sprite] or GUI [Control].
		Textures are often created by loading them from a file. See [method @GDScript.load].
		[Texture] is a base for other resources. It cannot be used directly.
		[b]Note:[/b] The maximum texture size is 16384×16384 pixels due to graphics hardware limitations. Larger textures may fail to import.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="draw" qualifiers="const">
			<return type="void">
			</return>
			<argument index="0" name="canvas_item" type="RID">
			</argument>
			<argument index="1" name="position" type="Vector2">
			</argument>
			<argument index="2" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )">
			</argument>
			<argument index="3" name="transpose" type="bool" default="false">
			</argument>
			<argument index="4" name="normal_map" type="Texture" default="null">
			</argument>
			<description>
				Draws the texture using a [CanvasItem] with the [VisualServer] API at the specified [code]position[/code]. Equivalent to [method VisualServer.canvas_item_add_texture_rect] with a rect at [code]position[/code] and the size of this [Texture].
			</description>
		</method>
		<method name="draw_rect" qualifiers="const">
			<return type="void">
			</return>
			<argument index="0" name="canvas_item" type="RID">
			</argument>
			<argument index="1" name="rect" type="Rect2">
			</argument>
			<argument index="2" name="tile" type="bool">
			</argument>
			<argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )">
			</argument>
			<argument index="4" name="transpose" type="bool" default="false">
			</argument>
			<argument index="5" name="normal_map" type="Texture" default="null">
			</argument>
			<description>
				Draws the texture using a [CanvasItem] with the [VisualServer] API. Equivalent to [method VisualServer.canvas_item_add_texture_rect].
			</description>
		</method>
		<method name="draw_rect_region" qualifiers="const">
			<return type="void">
			</return>
			<argument index="0" name="canvas_item" type="RID">
			</argument>
			<argument index="1" name="rect" type="Rect2">
			</argument>
			<argument index="2" name="src_rect" type="Rect2">
			</argument>
			<argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )">
			</argument>
			<argument index="4" name="transpose" type="bool" default="false">
			</argument>
			<argument index="5" name="normal_map" type="Texture" default="null">
			</argument>
			<argument index="6" name="clip_uv" type="bool" default="true">
			</argument>
			<description>
				Draws a part of the texture using a [CanvasItem] with the [VisualServer] API. Equivalent to [method VisualServer.canvas_item_add_texture_rect_region].
			</description>
		</method>
		<method name="get_data" qualifiers="const">
			<return type="Image">
			</return>
			<description>
				Returns an [Image] that is a copy of data from this [Texture]. [Image]s can be accessed and manipulated directly.
			</description>
		</method>
		<method name="get_height" qualifiers="const">
			<return type="int">
			</return>
			<description>
				Returns the texture height.
			</description>
		</method>
		<method name="get_size" qualifiers="const">
			<return type="Vector2">
			</return>
			<description>
				Returns the texture size.
			</description>
		</method>
		<method name="get_width" qualifiers="const">
			<return type="int">
			</return>
			<description>
				Returns the texture width.
			</description>
		</method>
		<method name="has_alpha" qualifiers="const">
			<return type="bool">
			</return>
			<description>
				Returns [code]true[/code] if this [Texture] has an alpha channel.
			</description>
		</method>
	</methods>
	<members>
		<member name="flags" type="int" setter="set_flags" getter="get_flags" default="4">
			The texture's [enum Flags]. [enum Flags] are used to set various properties of the [Texture].
		</member>
	</members>
	<constants>
		<constant name="FLAGS_DEFAULT" value="7" enum="Flags">
			Default flags. [constant FLAG_MIPMAPS], [constant FLAG_REPEAT] and [constant FLAG_FILTER] are enabled.
		</constant>
		<constant name="FLAG_MIPMAPS" value="1" enum="Flags">
			Generates mipmaps, which are smaller versions of the same texture to use when zoomed out, keeping the aspect ratio.
		</constant>
		<constant name="FLAG_REPEAT" value="2" enum="Flags">
			Repeats the texture (instead of clamp to edge).
			[b]Note:[/b] Ignored when using an [AtlasTexture] as these don't support repetition.
		</constant>
		<constant name="FLAG_FILTER" value="4" enum="Flags">
			Uses a magnifying filter, to enable smooth zooming in of the texture.
		</constant>
		<constant name="FLAG_ANISOTROPIC_FILTER" value="8" enum="Flags">
			Uses anisotropic mipmap filtering. Generates smaller versions of the same texture with different aspect ratios.
			This results in better-looking textures when viewed from oblique angles.
		</constant>
		<constant name="FLAG_CONVERT_TO_LINEAR" value="16" enum="Flags">
			Converts the texture to the sRGB color space.
		</constant>
		<constant name="FLAG_MIRRORED_REPEAT" value="32" enum="Flags">
			Repeats the texture with alternate sections mirrored.
			[b]Note:[/b] Ignored when using an [AtlasTexture] as these don't support repetition.
		</constant>
		<constant name="FLAG_VIDEO_SURFACE" value="2048" enum="Flags">
			Texture is a video surface.
		</constant>
	</constants>
</class>
