Spec-Zone.ru › LÖVE

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,
})

См. также

  • love.graphics
  • love.graphics.getCanvas
  • Canvas
  • Canvas:renderTo


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

Spec-Zone.ru

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