love.graphics.setCanvas
Доступно с LÖVE 0.8.0
Было переименовано из love.graphics.setRenderTarget.
Захватывает операции рисования в Canvas.
Функция
Устанавливает целевой объект рендеринга в указанный Canvas. Все операции рисования до следующего вызова love.graphics.setCanvas будут перенаправлены в Canvas и не будут отображаться на экране.
При использовании стенцилы или тестирования глубины с активным Canvas, буфер стенцилы или буфер глубины должны быть явно включены в setCanvas с помощью вариантов ниже.
Обратите внимание, что ни один canvas не должен быть активным при вызове love.graphics.present. love.graphics.present вызывается в конце love.draw в стандартном love.run, поэтому если вы активируете canvas с помощью этой функции, вам обычно нужно его деактивировать в какой-то момент до завершения love.draw.
Синтаксис
love.graphics.setCanvas( canvas, mipmap )
Аргументы
Canvas canvas- Новый целевой объект.
-
number mipmap (1)Доступно с версии 11.0 - Уровень mipmap для рендеринга в Canvas с mipmap.
Возвращаемое значение
Ничего.
Функция
Сбрасывает целевой объект рендеринга на экран, то есть снова разрешает рисование на экран.
Синтаксис
love.graphics.setCanvas( )
Аргументы
Нет.
Возвращаемое значение
Ничего.
Функция
Доступно с LÖVE 0.9.0
Этот вариант не поддерживается в более ранних версиях.
Устанавливает целевой объект рендеринга для нескольких одновременных 2D Canvas. Все операции рисования до следующего вызова love.graphics.setCanvas будут перенаправлены в указанные canvas и не будут отображаться на экране.
Синтаксис
love.graphics.setCanvas( canvas1, canvas2, ... )
Аргументы
Canvas canvas1- Первый целевой объект рендеринга.
Canvas canvas2- Второй целевой объект рендеринга.
Canvas ...- Дополнительные canvas.
Возвращаемое значение
Ничего.
Примечания
Обычно все операции рисования будут производиться только для первого canvas, переданного в функцию, но это может быть изменено, если используется пиксельный шейдер с void effect функцией вместо обычной vec4 effect.
Все аргументы canvas должны иметь одинаковую ширину и высоту и одинаковый тип текстуры тип текстуры. Не все компьютеры, поддерживающие Canvas, будут поддерживать несколько целевых объектов рендеринга. Если love.graphics.isSupported("multicanvas") возвращает true, поддерживается как минимум 4 одновременно активных canvas.
Функция
Доступно с LÖVE 11.0
Этот вариант не поддерживается в более ранних версиях.
Устанавливает целевой объект рендеринга для указанного слоя/среза и уровня mipmap заданного не-2D Canvas. Все операции рисования до следующего вызова love.graphics.setCanvas будут перенаправлены в Canvas и не будут отображаться на экране.
Синтаксис
love.graphics.setCanvas( canvas, slice, mipmap )
Аргументы
Canvas canvas- Новый целевой объект рендеринга.
number slice- Для куб-карт это индекс грани куба для рендеринга (от 1 до 6). Для массивов текстур это слой массива. Для объемных текстур это срез глубины. Для 2D canvas должно использоваться значение 1.
number mipmap (1)- Уровень mipmap для рендеринга в Canvas с mipmap.
Возвращаемое значение
Ничего.
Функция
Доступно с LÖVE 11.0
Этот вариант не поддерживается в более ранних версиях.
Устанавливает активный(е) целевой(е) объект(ы) рендеринга и активные буферы стенцилы и глубины на основе указанной информации о настройках. Все операции рисования до следующего вызова love.graphics.setCanvas будут перенаправлены в указанные Canvas и не будут отображаться на экране.
Синтаксис
love.graphics.setCanvas( setup )
Аргументы
table setup- Таблица, определяющая активные Canvas, их уровни mipmap и активные слои (применимо), а также использование буферов стенцилы и глубины.
RenderTargetSetup [1]- Canvas для рендеринга.
RenderTargetSetup [2] (nil)- Дополнительный Canvas для рендеринга, если требуется несколько одновременных целевых объектов рендеринга.
RenderTargetSetup ...- Дополнительные Canvas для рендеринга, если требуется несколько одновременных целевых объектов рендеринга.
boolean stencil (false)- Использовать ли внутренне управляемый буфер стенцилы, если поле
depthstencilне установлено. boolean depth (false)- Использовать ли внутренне управляемый буфер глубины, если поле
depthstencilне установлено. RenderTargetSetup depthstencil (nil)- Необязательный пользовательский Canvas с форматом глубины/стенцилы формат для использования в буфере глубины и/или стенцилы.
Возвращаемое значение
Ничего.
Примечания
Параметры RenderTargetSetup могут быть объектом Canvas или таблицей в следующем формате: {canvas, mipmap=#, layer=#, face=#}.
Canvas [1]- Используемый Canvas для этого активного целевого объекта рендеринга.
number mipmap (1)- Уровень mipmap для рендеринга в Canvas с mipmap.
number layer (1)- Используется только для объемных и массивно-текстурированных Canvas. Для массивов текстур это слой массива для рендеринга. Для объемных текстур это срез глубины.
number face (1)- Используется только для кубических карт. Индекс грани куба для рендеринга (от 1 до 6)
Примеры
Рисование в canvas
function love.load()
-- create canvas
canvas = love.graphics.newCanvas()
-- direct drawing operations to the canvas
love.graphics.setCanvas(canvas)
-- draw colored square to canvas
love.graphics.setColor(0.8, 0.9, 0.4)
love.graphics.rectangle("fill", 0, 0, 100, 100)
-- re-enable drawing to the main screen
love.graphics.setCanvas()
end
function love.draw()
-- draw scaled canvas to screen
love.graphics.setColor(1, 1, 1)
love.graphics.draw(canvas, 200, 100, 0, 0.5, 0.5)
end
Расширенная настройка с помощью табличного варианта love.graphics.setCanvas
-- Allow love.graphics.stencil calls when drawing to the given Canvas.
love.graphics.setCanvas({canvas, stencil=true})
-- Use multiple simultaneous render targets when drawing to several canvases of the Array Texture type,
-- and use a custom depth buffer as well.
canvas1 = love.graphics.newCanvas(128, 128, 4, {type="array"})
canvas2 = love.graphics.newCanvas(128, 128, 8, {type="array"})
depthcanvas = love.graphics.newCanvas(128, 128, {format="depth24", readable=true})
love.graphics.setCanvas({
{canvas1, layer = 3},
{canvas2, layer = 1},
depthstencil = depthcanvas,
})
См. также
© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/love.graphics.setCanvas