Spec-Zone.ru › LÖVE

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API