Spec-Zone.ru › LÖVE

Canvas

Доступно начиная с LÖVE 0.8.0
Было переименовано из Framebuffer.

Canvas используется для рендеринга вне экрана. Представьте его как невидимый экран, на который можно рисовать, но который не будет виден, пока вы не нарисуете его на реальном видимом экране. Также он известен как "рендеринг в текстуру".

Рисуя элементы, положение которых часто не меняется (например, фоновые объекты), на Canvas и затем рисуя весь Canvas вместо каждого элемента, вы можете уменьшить количество операций рисования, выполняемых в каждом кадре.

В версиях до 0.10.0 не все графические карты, поддерживаемые LÖVE, могли использовать Canvas. love.graphics.isSupported("canvas") можно использовать для проверки поддержки во время выполнения.


При рисовании содержимого на Canvas с обычным альфа-смешиванием значения альфа содержимого умножаются на его значения RGB.

Поэтому цвета пикселей Canvas будут иметь предварительно умноженную альфу после отрисовки, поэтому при рисовании Canvas на экран или на другой Canvas необходимо использовать предварительно умноженное альфа-смешивание – love.graphics.setBlendMode("alpha", "premultiplied").

Конструкторы

love.graphics.newCanvas Создаёт новый Canvas. 0.8.0

Функции

Canvas:clear Очищает содержимое Canvas до определенного цвета. 0.8.0 0.10.0
Canvas:generateMipmaps Генерирует mipmaps для Canvas, основываясь на содержимом mipmap-уровня с наивысшим разрешением. 11.0
Canvas:getFSAA Получает количество выборок FSAA, используемых при рисовании на Canvas. 0.9.1 0.10.0
Canvas:getFormat Получает формат текстуры Canvas. 0.9.1 11.0
Canvas:getImageData Генерирует ImageData из содержимого Canvas. 0.8.0 0.10.0
Canvas:getMSAA Получает количество выборок MSAA, используемых при рисовании на Canvas. 0.9.2
Canvas:getMipmapMode Получает MipmapMode, с которым был создан этот Canvas. 11.0
Canvas:getPixel Получает пиксель в указанной позиции в Canvas. 0.9.0 0.10.0
Canvas:newImageData Генерирует ImageData из содержимого Canvas. 0.10.0
Canvas:renderTo Отрисовка в Canvas с использованием функции. 0.8.0
Object:release Немедленно уничтожает ссылку Lua на объект. 11.0
Object:type Получает тип объекта в виде строки.
Object:typeOf Проверяет, является ли объект определённого типа.
Texture:getDPIScale Получает масштаб DPI текстуры. 11.0
Texture:getDepth Получает глубину объёмной текстуры. 11.0
Texture:getDepthSampleMode Получает режим сравнения, используемый при выборке из глубины текстуры в шейдере. 11.0
Texture:getDimensions Получает ширину и высоту текстуры. 0.9.0
Texture:getFilter Получает режим фильтрации текстуры.
Texture:getFormat Получает формат пикселей текстуры. 11.0
Texture:getHeight Получает высоту текстуры.
Texture:getLayerCount Получает количество слоёв/слайсов в массиве текстур. 11.0
Texture:getMipmapCount Получает количество mipmap, содержащихся в текстуре. 11.0
Texture:getMipmapFilter Получает режим фильтрации mipmap для текстуры. 0.9.0
Texture:getPixelDimensions Получает ширину и высоту в пикселях текстуры. 11.0
Texture:getPixelHeight Получает высоту в пикселях текстуры. 11.0
Texture:getPixelWidth Получает ширину в пикселях текстуры. 11.0
Texture:getTextureType Получает тип текстуры. 11.0
Texture:getWidth Получает ширину текстуры.
Texture:getWrap Получает свойства обёртки текстуры.
Texture:isReadable Получает, можно ли текстуру отправлять в шейдер. 11.0
Texture:setDepthSampleMode Устанавливает режим сравнения, используемый при выборке из глубины текстуры в шейдере. 11.0
Texture:setFilter Устанавливает режим фильтрации текстуры.
Texture:setMipmapFilter Устанавливает режим фильтрации mipmap для текстуры. 0.9.0
Texture:setWrap Устанавливает свойства обёртки текстуры.

Перечисления

MipmapMode Управляет тем, есть ли у Canvas mipmaps и его поведением, если они есть. 11.0

Надтипы

  • Текстура
  • Рисуемый объект
  • Объект

Примеры

Рисование чего-либо на Canvas и последующее рисование Canvas на экран.

function love.load()
    canvas = love.graphics.newCanvas(800, 600)
 
    -- Rectangle is drawn to the canvas with the regular alpha blend mode.
    love.graphics.setCanvas(canvas)
        love.graphics.clear()
        love.graphics.setBlendMode("alpha")
        love.graphics.setColor(1, 0, 0, 0.5)
        love.graphics.rectangle('fill', 0, 0, 100, 100)
    love.graphics.setCanvas()
end
 
function love.draw()
    -- very important!: reset color before drawing to canvas to have colors properly displayed
    -- see discussion here: https://love2d.org/forums/viewtopic.php?f=4&p=211418#p211418
    love.graphics.setColor(1, 1, 1, 1)
 
    -- The rectangle from the Canvas was already alpha blended.
    -- Use the premultiplied alpha blend mode when drawing the Canvas itself to prevent improper blending.
    love.graphics.setBlendMode("alpha", "premultiplied")
    love.graphics.draw(canvas)
    -- Observe the difference if the Canvas is drawn with the regular alpha blend mode instead.
    love.graphics.setBlendMode("alpha")
    love.graphics.draw(canvas, 100, 0)
 
    -- Rectangle is drawn directly to the screen with the regular alpha blend mode.
    love.graphics.setBlendMode("alpha")
    love.graphics.setColor(1, 0, 0, 0.5)
    love.graphics.rectangle('fill', 200, 0, 100, 100)
end

См. также

  • love.graphics
  • love.graphics.setCanvas
  • love.graphics.setBlendMode
  • love.graphics.isSupported


© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/Canvas

Spec-Zone.ru

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