{{newin|[[0.8.0]]|080|type=function|text=It has been renamed from [[love.graphics.setRenderTarget]]}}
Captures drawing operations to a [[Canvas]].
== 関数 ==
Sets the render target to a specified [[Canvas]]. All drawing operations until the next ''love.graphics.setCanvas'' call will be redirected to the [[Canvas]] and not shown on the screen.

When using a [[love.graphics.stencil|stencil]] or [[love.graphics.setDepthMode|depth testing]] with an active Canvas, the stencil buffer or depth buffer must be explicitly enabled in setCanvas via the variants below.

Note that no canvas should be active when ''[[love.graphics.present]]'' is called. ''love.graphics.present'' is called at the end of [[love.draw]] in the default [[love.run]], hence if you activate a canvas using this function, you normally need to deactivate it at some point before ''love.draw'' finishes.
=== 概要 ===
<source lang="lua">
love.graphics.setCanvas( canvas, mipmap )
</source>
=== 引数 ===
{{param (日本語)|Canvas|canvas|The new target.}}
{{New feature (日本語)|11.0|
{{param (日本語)|number|mipmap (1)|The mipmap level to render to, for Canvases with [[Texture:getMipmapCount|mipmaps]].}}
}}
=== 返値 ===
ありません。

== 関数 ==
Resets the render target to the screen, i.e. re-enables drawing to the screen.
=== 概要 ===
<source lang="lua">
love.graphics.setCanvas( )
</source>
=== 引数 ===
なし。
=== 返値 ===
ありません。

== 関数 ==
{{newin (日本語)|[[0.9.0 (日本語)|0.9.0]]|090|type=異形}}
Sets the render target to multiple simultaneous [[TextureType|2D]] [[Canvas]]es. All drawing operations until the next ''love.graphics.setCanvas'' call will be redirected to the specified canvases and not shown on the screen.
=== 概要 ===
<source lang="lua">
love.graphics.setCanvas( canvas1, canvas2, ... )
</source>
=== 引数 ===
{{param (日本語)|Canvas|canvas1|The first render target.}}
{{param (日本語)|Canvas|canvas2|The second render target.}}
{{param (日本語)|Canvas|...|More canvases.}}
=== 返値 ===
ありません。
=== 注釈 ===
Normally all drawing operations will draw only to the first canvas passed to the function, but that can be changed if a [[Shader|pixel shader]] is used with the [[love.graphics.newShader#Pixel_Shader_Function|<code>void effect</code> function]] instead of the regular <code>vec4 effect</code>.

All canvas arguments must have the same widths and heights and the same [[TextureMode|texture type]]. Not all computers which support Canvases will support multiple render targets. If [[love.graphics.isSupported|love.graphics.isSupported("multicanvas")]] returns true, at least 4 simultaneously active canvases are supported.

== 関数 ==
{{newin (日本語)|[[11.0 (日本語)|11.0]]|110|type=異形}}
Sets the render target to the specified [[TextureType|layer/slice]] and [[Texture:getMipmapCount|mipmap level]] of the given non-2D [[Canvas]]. All drawing operations until the next ''love.graphics.setCanvas'' call will be redirected to the [[Canvas]] and not shown on the screen.
=== 概要 ===
<source lang="lua">
love.graphics.setCanvas( canvas, slice, mipmap )
</source>
=== 引数 ===
{{param (日本語)|Canvas|canvas|The new render target.}}
{{param (日本語)|number|slice|For cubemaps this is the cube face index to render to (between 1 and 6). For Array textures this is the [[Texture:getLayerCount|array layer]]. For volume textures this is the depth slice. 2D canvases should use a value of 1.}}
{{param (日本語)|number|mipmap (1)|The mipmap level to render to, for Canvases with [[Texture:getMipmapCount|mipmaps]].}}
=== 返値 ===
ありません。

== 関数 ==
{{newin (日本語)|[[11.0 (日本語)|11.0]]|110|type=異形}}
Sets the active render target(s) and active stencil and depth buffers based on the specified setup information. All drawing operations until the next ''love.graphics.setCanvas'' call will be redirected to the specified [[Canvas]]es and not shown on the screen.
=== 概要 ===
<source lang="lua">
love.graphics.setCanvas( setup )
</source>
=== 引数 ===
{{param (日本語)|table|setup|A table specifying the active Canvas(es), their mipmap levels and active layers if applicable, and whether to use a stencil and/or depth buffer.}}
{{subparam|RenderTargetSetup|[1]|The Canvas to render to.}}
{{subparam|RenderTargetSetup|[2] (nil)|An additional Canvas to render to, if multiple simultaneous render targets are wanted.}}
{{subparam|RenderTargetSetup|...|Additional Canvases to render to, if multiple simultaneous render targets are wanted.}}
{{subparam|boolean|stencil (false)|Whether an internally managed stencil buffer should be used, if the <code>depthstencil</code> field isn't set.}}
{{subparam|boolean|depth (false)|Whether an internally managed depth buffer should be used, if the <code>depthstencil</code> field isn't set.}}
{{subparam|RenderTargetSetup|depthstencil (nil)|An optional custom depth/stencil [[PixelFormat|formatted]] Canvas to use for the depth and/or stencil buffer.}}
=== 返値 ===
ありません。
=== 注釈 ===
The <code>RenderTargetSetup</code> parameters can either be a [[Canvas]] object, or a table in the following format: <code>{canvas, mipmap=#, layer=#, face=#}</code>
{{param (日本語)|Canvas|[1]|The Canvas to use for this active render target.}}
{{param (日本語)|number|mipmap (1)|The mipmap level to render to, for Canvases with [[Texture:getMipmapCount|mipmaps]].}}
{{param (日本語)|number|layer (1)|Only used for [[TextureType|Volume and Array]]-type Canvases. For Array textures this is the [[Texture:getLayerCount|array layer]] to render to. For volume textures this is the depth slice.}}
{{param (日本語)|number|face (1)|Only used for [[TextureType|Cubemap]]-type Canvases. The cube face index to render to (between 1 and 6)}}

== 用例 ==
=== Drawing to a canvas ===
<source lang="lua">
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
</source>


=== Advanced setup with the table variant of love.graphics.setCanvas ===
<source lang="lua">
-- 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,
})
</source>

== 関連 ==
* [[parent::love.graphics (日本語)]]
* [[love.graphics.getCanvas (日本語)]]
* [[Canvas (日本語)]]
* [[Canvas:renderTo (日本語)]]
[[Category:Functions (日本語)]]
{{#set:Description=Captures drawing operations to a [[Canvas]]}}
{{#set:Sub-Category=State (日本語)}}

== そのほかの言語 ==
{{i18n (日本語)|love.graphics.setCanvas}}