У меня есть следующий код, который рисует синий прямоугольник и красную линию над ним на черном фоне.
function love.load()
love.window.setMode(300,200,{fullscreen=false})
end
function love.draw()
love.graphics.setColor(0, 0, 255, 255)
love.graphics.rectangle("fill", 20, 20, 100, 20)
love.graphics.setColor(255, 0, 0, 255)
love.graphics.line(70, 30, 120, 30)
end
Я попытался переместить рисунок на холст, поэтому мой код изменился на
local canvas
function love.load()
love.window.setMode(300,200,{fullscreen=false})
canvas = love.graphics.newCanvas(300, 200)
end
function love.draw()
love.graphics.setCanvas(canvas)
love.graphics.setColor(0, 0, 255, 255)
love.graphics.rectangle("fill", 20, 20, 100, 20)
love.graphics.setColor(255, 0, 0, 255)
love.graphics.line(70, 30, 120, 30)
love.graphics.setCanvas()
love.graphics.draw(canvas)
end
Но вторая версия рисует только красную линию на черном фоне.
Я делаю что-то неправильно?
У меня 64-разрядная версия Windows 10 Enterprise, Lua 5.3.5, Löve 11.2.0.Mysterious Mysteries.
Вам нужно поставить строку:
love.graphics.setColor(1, 1, 1, 1)
… перед строкой love.graphics.draw(canvas)
, чтобы сбросить цвета, которыми можно раскрасить холст. При этом вы можете отфильтровать цвета/изменить альфа-канал всего холста.
Кстати, значения цвета теперь находятся в диапазоне 0 -> 1, начиная с v11.
В документах есть пример кода с примечанием об этом здесь...
Спасибо! Итак, я получаю только красный и синий, потому что я поставил 0 для других цветов? Проклятие.