Difference between revisions of "SpriteBatch:addLayer"

(Created page)
 
m (0.11.0 -> 11.0)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{newin|[[0.11.0]]|110|type=function}}
+
{{newin|[[11.0]]|110|type=function}}
 
Adds a sprite to a batch created with an [[TextureType|Array Texture]].
 
Adds a sprite to a batch created with an [[TextureType|Array Texture]].
  
 
== Function ==
 
== Function ==
 
Adds a layer of the SpriteBatch's Array Texture.
 
Adds a layer of the SpriteBatch's Array Texture.
Draws a layer of an Array Texture.
 
 
=== Synopsis ===
 
=== Synopsis ===
 
<source lang="lua">
 
<source lang="lua">
Line 31: Line 30:
 
=== Arguments ===
 
=== Arguments ===
 
{{param|number|layerindex|The index of the layer to use for this sprite.}}
 
{{param|number|layerindex|The index of the layer to use for this sprite.}}
{{param|Quad|quad|The subsection of the texture's layer to use when drawing.}}
+
{{param|Quad|quad|The subsection of the texture's layer to use when drawing the sprite.}}
 
{{param|number|x (0)|The position to draw the sprite (x-axis).}}
 
{{param|number|x (0)|The position to draw the sprite (x-axis).}}
 
{{param|number|y (0)|The position to draw the sprite (y-axis).}}
 
{{param|number|y (0)|The position to draw the sprite (y-axis).}}
Line 53: Line 52:
 
</source>
 
</source>
 
=== Arguments ===
 
=== Arguments ===
{{param|number|layerindex|The index of the layer to use when drawing.}}
+
{{param|number|layerindex|The index of the layer to use for this sprite.}}
 
{{param|Transform|transform|A transform object.}}
 
{{param|Transform|transform|A transform object.}}
 
=== Returns ===
 
=== Returns ===
Line 65: Line 64:
 
</source>
 
</source>
 
=== Arguments ===
 
=== Arguments ===
{{param|number|layerindex|The index of the layer to use when drawing.}}
+
{{param|number|layerindex|The index of the layer to use for this sprite.}}
{{param|Quad|quad|The subsection of the texture's layer to use when drawing.}}
+
{{param|Quad|quad|The subsection of the texture's layer to use when drawing the sprite.}}
 
{{param|Transform|transform|A transform object.}}
 
{{param|Transform|transform|A transform object.}}
 
=== Returns ===
 
=== Returns ===

Latest revision as of 18:26, 7 May 2019

Available since LÖVE 11.0
This function is not supported in earlier versions.

Adds a sprite to a batch created with an Array Texture.

Function

Adds a layer of the SpriteBatch's Array Texture.

Synopsis

spriteindex = SpriteBatch:addLayer( layerindex, x, y, r, sx, sy, ox, oy, kx, ky )

Arguments

number layerindex
The index of the layer to use for this sprite.
number x (0)
The position to draw the sprite (x-axis).
number y (0)
The position to draw the sprite (y-axis).
number r (0)
Orientation (radians).
number sx (1)
Scale factor (x-axis).
number sy (sx)
Scale factor (y-axis).
number ox (0)
Origin offset (x-axis).
number oy (0)
Origin offset (y-axis).
number kx (0)
Shearing factor (x-axis).
number ky (0)
Shearing factor (y-axis).

Returns

number spriteindex
The index of the added sprite, for use with SpriteBatch:set or SpriteBatch:setLayer.

Function

Adds a layer of the SpriteBatch's Array Texture using the specified Quad.

Synopsis

spriteindex = SpriteBatch:addLayer( layerindex, quad, x, y, r, sx, sy, ox, oy, kx, ky )

Arguments

number layerindex
The index of the layer to use for this sprite.
Quad quad
The subsection of the texture's layer to use when drawing the sprite.
number x (0)
The position to draw the sprite (x-axis).
number y (0)
The position to draw the sprite (y-axis).
number r (0)
Orientation (radians).
number sx (1)
Scale factor (x-axis).
number sy (sx)
Scale factor (y-axis).
number ox (0)
Origin offset (x-axis).
number oy (0)
Origin offset (y-axis).
number kx (0)
Shearing factor (x-axis).
number ky (0)
Shearing factor (y-axis).

Returns

number spriteindex
The index of the added sprite, for use with SpriteBatch:set or SpriteBatch:setLayer.

Notes

The specified layer index overrides any layer index set on the Quad via Quad:setLayer.

Function

Adds a layer of the SpriteBatch's Array Texture using the specified Transform.

Synopsis

spriteindex = SpriteBatch:addLayer( layerindex, transform )

Arguments

number layerindex
The index of the layer to use for this sprite.
Transform transform
A transform object.

Returns

number spriteindex
The index of the added sprite, for use with SpriteBatch:set or SpriteBatch:setLayer.

Function

Adds a layer of the SpriteBatch's Array Texture using the specified Quad and Transform.

Synopsis

spriteindex = SpriteBatch:addLayer( layerindex, quad, transform )

Arguments

number layerindex
The index of the layer to use for this sprite.
Quad quad
The subsection of the texture's layer to use when drawing the sprite.
Transform transform
A transform object.

Returns

number spriteindex
The index of the added sprite, for use with SpriteBatch:set or SpriteBatch:setLayer.

Notes

The specified layer index overrides any layer index set on the Quad via Quad:setLayer.

Notes

In order to use an Array Texture or other non-2D texture types as the main texture in a custom Shader, the void effect() variant must be used in the pixel shader, and MainTex must be declared as an ArrayImage or sampler2DArray like so: uniform ArrayImage MainTex;.

Examples

Draw multiple layers of an Array Image in a SpriteBatch

function love.load()
    local sprites = {"sprite1.png", "sprite2.png"}
    image = love.graphics.newArrayImage(sprites)

    batch = love.graphics.newSpriteBatch(image)
    batch:addLayer(1, 50, 50)
    batch:addLayer(2, 250, 50)
end

function love.draw()
    love.graphics.draw(batch)
end

Use a custom shader

shader = love.graphics.newShader[[
uniform ArrayImage MainTex;

void effect() {
    // Texel uses a third component of the texture coordinate for the layer index, when an Array Texture is passed in.
    // love sets up the texture coordinates to contain the layer index specified in love.graphics.drawLayer, when
    // rendering the Array Texture.
    love_PixelColor = Texel(MainTex, VaryingTexCoord.xyz) * VaryingColor;
}
]]

function love.load()
    local sprites = {"sprite1.png", "sprite2.png"}
    image = love.graphics.newArrayImage(sprites)

    batch = love.graphics.newSpriteBatch(image)
    batch:addLayer(1, 50, 50)
    batch:addLayer(2, 250, 50)
end

function love.draw()
    love.graphics.setShader(shader)
    love.graphics.draw(batch)
end

See Also

Other Languages