SpriteBatch:addLayer
Доступно начиная с LÖVE 11.0
Эта функция не поддерживается в более ранних версиях.
Добавляет спрайт в пакет, созданный с помощью текстуры массива.
Функция
Добавляет слой текстуры массива SpriteBatch.
Синтаксис
spriteindex = SpriteBatch:addLayer( layerindex, x, y, r, sx, sy, ox, oy, kx, ky )
Аргументы
number layerindex- Индекс слоя, используемого для этого спрайта.
number x (0)- Положение для отрисовки спрайта (ось X).
number y (0)- Положение для отрисовки спрайта (ось Y).
number r (0)- Ориентация (радиан).
number sx (1)- Коэффициент масштаба (ось X).
number sy (sx)- Коэффициент масштаба (ось Y).
number ox (0)- Смещение начала координат (ось X).
number oy (0)- Смещение начала координат (ось Y).
number kx (0)- Коэффициент сдвига (ось X).
number ky (0)- Коэффициент сдвига (ось Y).
Возвращаемое значение
number spriteindex- Индекс добавленного спрайта, используемый с SpriteBatch:set или SpriteBatch:setLayer.
Функция
Добавляет слой текстуры массива SpriteBatch, используя указанный Quad.
Синтаксис
spriteindex = SpriteBatch:addLayer( layerindex, quad, x, y, r, sx, sy, ox, oy, kx, ky )
Аргументы
number layerindex- Индекс слоя, используемого для этого спрайта.
Quad quad- Подраздел слоя текстуры, используемый при отрисовке спрайта.
number x (0)- Положение для отрисовки спрайта (ось X).
number y (0)- Положение для отрисовки спрайта (ось Y).
number r (0)- Ориентация (радиан).
number sx (1)- Коэффициент масштаба (ось X).
number sy (sx)- Коэффициент масштаба (ось Y).
number ox (0)- Смещение начала координат (ось X).
number oy (0)- Смещение начала координат (ось Y).
number kx (0)- Коэффициент сдвига (ось X).
number ky (0)- Коэффициент сдвига (ось Y).
Возвращаемое значение
number spriteindex- Индекс добавленного спрайта, используемый с SpriteBatch:set или SpriteBatch:setLayer.
Примечания
Указанный индекс слоя переопределяет любой индекс слоя, установленный для Quad с помощью Quad:setLayer.
Функция
Добавляет слой текстуры массива SpriteBatch, используя указанный Transform.
Синтаксис
spriteindex = SpriteBatch:addLayer( layerindex, transform )
Аргументы
number layerindex- Индекс слоя, используемого для этого спрайта.
Transform transform- Объект преобразования.
Возвращаемое значение
number spriteindex- Индекс добавленного спрайта, используемый с SpriteBatch:set или SpriteBatch:setLayer.
Функция
Добавляет слой текстуры массива SpriteBatch, используя указанный Quad и Transform.
Синтаксис
spriteindex = SpriteBatch:addLayer( layerindex, quad, transform )
Аргументы
number layerindex- Индекс слоя, используемого для этого спрайта.
Quad quad- Подраздел слоя текстуры, используемый при отрисовке спрайта.
Transform transform- Объект преобразования.
Возвращаемое значение
number spriteindex- Индекс добавленного спрайта, используемый с SpriteBatch:set или SpriteBatch:setLayer.
Примечания
Указанный индекс слоя переопределяет любой индекс слоя, установленный для Quad с помощью Quad:setLayer.
Примечания
Для использования текстуры массива или других типов текстур, отличных от 2D, как основной текстуры в пользовательском Shader, необходимо использовать вариант void effect() в шейдере пикселей, и MainTex должен быть объявлен как ArrayImage или sampler2DArray следующим образом: uniform ArrayImage MainTex;.
Примеры
Отрисовка нескольких слоёв массива изображений в 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
Использование пользовательского шейдера
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
См. также
- SpriteBatch
- SpriteBatch:setLayer
- love.graphics.newArrayImage
- love.graphics.newCanvas
- love.graphics.newShader
- Тип текстуры
© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/SpriteBatch:addLayer