TextureBase:SetTexture

From Warcraft Wiki
(Redirected from API Texture SetTexture)
Jump to navigation Jump to search

Sets the texture to an image.

TextureBase:SetTexture([textureAsset, wrapModeHorizontal, wrapModeVertical, filterMode])

Arguments

To clear the texture call this without any params or nil.

textureAsset
number|string? - A FileID or the file path to a texture.
wrapModeHorizontal
string? = CLAMP - If SetHorizTile is enabled, sets the wrap behavior for pixels with an x coordinate outside the (0, 1) region of the texture coordinate space.
wrapModeVertical
string? = CLAMP - If SetVertTile is enabled, sets the wrap behavior for pixels with a y coordinate outside the (0, 1) region of the texture coordinate space.
wrapMode Description
CLAMP Default; extends the texture edges infinitely.
CLAMPTOWHITE Fills the overflow with white.
CLAMPTOBLACK Fills the overflow with black.
CLAMPTOBLACKADDITIVE Fills overflow with a transparent black.
REPEAT (or true) Repeats the whole texture infinitely.
MIRROR Repeats the whole texture infinitely, mirroring adjacent iterations.
filterMode
string? = LINEAR
filterMode Description
LINEAR Default; bilinear filtering.
TRILINEAR Also sampling mipmaps.
NEAREST Nearest-neighbor filtering.

Details

  • Custom images must be in BLP, JPEG, PNG, or TGA format with power-of-two dimensions (e.g. 16x16, 8x32, 256x64). TGA images may have 8bpp grayscale, 24bpp RGB, or 32 bpp RGBA; RLE is supported.
    • Unlike other formats, PNG files must explicitly include the ".png" extension when their file path is used in-game.
  • Pixels outside the texture coordinate space may be sampled explicitly by SetTexCoord, or implicitly by the tiling mechanism when the texture widget is larger than the default size of the texture file.
  • Textures load asynchronously. For example, texture:GetSize() returns 0,0 until IsObjectLoaded becomes true; and then it returns the native texture size. See also TextureLoadingGroupMixin:IsFullyLoaded.
  • This API has a success return value but it has no significance since it always returns true, even for invalid FileIDs or parameters.

Example

Shows an icon on the screen.

local tex = UIParent:CreateTexture()
tex:SetPoint("CENTER")

tex:SetTexture(134532) -- interface/icons/inv_mushroom_11

API TextureBase SetTexture 01.png

The texture will be stretched or compressed if tiling is disabled.

tex:SetTexture("Interface/ContainerFrame/UI-Icon-QuestBang")
tex:SetSize(256, 64)

API TextureBase SetTexture 03.png

tex:SetTexture("Interface/ContainerFrame/UI-Icon-QuestBang")
tex:SetSize(32, 64)

API TextureBase SetTexture 13.png

Wrap Mode

When tiling is enabled, wrap mode specifies how pixels outside the texture coordinate space will be handled.

CLAMP - If the wrap mode is omitted it defaults to clamp.
tex:SetTexture("Interface/ContainerFrame/UI-Icon-QuestBang")
tex:SetSize(256, 64)
tex:SetHorizTile(true)

API TextureBase SetTexture 04.png

Clamping extends the texture edges infinitely. This texture illustrates how the right and bottom edges and the bottomright pixel get extended.

tex:SetTexture("Interface/RAIDFRAME/Shield-Overlay", "CLAMP", "CLAMP")
tex:SetSize(64, 64)
tex:SetScale(2)
tex:SetHorizTile(true)
tex:SetVertTile(true)

API TextureBase SetTexture 10.png

CLAMPTOWHITE - Fills everything outside the texture coordinate space with opaque white.
tex:SetTexture("Interface/ContainerFrame/UI-Icon-QuestBang", "CLAMPTOWHITE")
tex:SetSize(256, 64)
tex:SetHorizTile(true)

API TextureBase SetTexture 06.png

CLAMPTOBLACK - Fills everything outside the texture coordinate space with opaque black.
tex:SetTexture("Interface/ContainerFrame/UI-Icon-QuestBang", "CLAMPTOBLACK")
tex:SetSize(256, 64)
tex:SetHorizTile(true)

API TextureBase SetTexture 05.png

CLAMPTOBLACKADDITIVE - Additive clamping to black means every pixel that is outside the unit square containing the original texture is filled with transparent black pixels (R=G=B=A=0). The transparent pixels being black can matter in specific situations where the AlphaMode ignores the alpha channel.
tex:SetTexture("Interface/Buttons/YELLOWORANGE64", "CLAMPTOBLACKADDITIVE")
tex:SetSize(128, 64)
tex:SetHorizTile(true)
REPEAT - Sets the wrapMode to repeat horizontally.
tex:SetTexture("Interface/ContainerFrame/UI-Icon-QuestBang", "REPEAT")
tex:SetSize(256, 64)
tex:SetHorizTile(true)

API TextureBase SetTexture 02.png

Repeats horizontally and vertically

tex:SetTexture("Interface/ContainerFrame/UI-Icon-QuestBang", "REPEAT", "REPEAT")
tex:SetSize(128, 128)
tex:SetHorizTile(true)
tex:SetVertTile(true)

API TextureBase SetTexture 07.png

MIRROR - Sets the wrapMode to mirror vertically.
tex:SetTexture("Interface/ContainerFrame/UI-Icon-QuestBang", "MIRROR")
tex:SetSize(128, 64)
tex:SetHorizTile(true)

API TextureBase SetHorizTile 01.png

Patch changes

Dragonflight Patch 10.0.7 (2023-03-21): Added PNG texture format support.
Shadowlands Patch 9.0.1 (2020-10-13): New files located in the Interface/AddOns/ directory tree no longer require a client restart to take effect, only a /reload.
Battle for Azeroth Patch 8.0.1 (2018-07-17): Added filterMode argument.
Legion Patch 7.3.5 (2018-01-16): Changed horizWrap to apply horizontally and vertically, ignoring vertWrap. As of Dragonflight this seems to be no longer the case.
Legion Patch 7.0.3 (2016-07-19): Solid-color variant replaced with TextureBase:SetColorTexture.
Cataclysm Patch 4.0.3a (2010-11-23): Changed the return value to always return true; no longer indicating success.
WoW Icon update.png Patch 1.10.0 (2006-03-28): Added success return value.[1]

References