Difference between revisions of "love.graphics.setCanvas (日本語)"
m |
m (w.i.p.) |
||
Line 2: | Line 2: | ||
[[Canvas (日本語)|Canvas]] へ描画操作を取り込みます。 | [[Canvas (日本語)|Canvas]] へ描画操作を取り込みます。 | ||
== 関数 == | == 関数 == | ||
− | + | 指定の [[Canvas (日本語)|Canvas]] へ表示対象を設定します。次回の ''love.graphics.setCanvas'' が呼ばれるまで全描画操作は指定された [[Canvas (日本語)|Canvas]] へ転送されますが、画面には表示されません。 | |
+ | |||
+ | 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"> | <source lang="lua"> | ||
− | love.graphics.setCanvas( canvas ) | + | love.graphics.setCanvas( canvas, mipmap ) |
</source> | </source> | ||
=== 引数 === | === 引数 === | ||
− | {{param|Canvas|canvas| | + | {{param|Canvas|canvas|新規表示対象。}} |
− | === | + | {{New feature (日本語)|11.0| |
+ | {{param|number|mipmap (1)|Canvas の[[Texture:getMipmapCount (日本語)|ミップマップ]]に対するレンダリング先のミップマップレベル。}} | ||
+ | }} | ||
+ | === 返値 === | ||
ありません。 | ありません。 | ||
Line 20: | Line 27: | ||
=== 引数 === | === 引数 === | ||
なし。 | なし。 | ||
− | === | + | === 返値 === |
ありません。 | ありません。 | ||
== 関数 == | == 関数 == | ||
{{newin (日本語)|[[0.9.0]]|090|type=異形}} | {{newin (日本語)|[[0.9.0]]|090|type=異形}} | ||
− | 複数同時に [[Canvas(日本語)|Canvas]] | + | 複数同時に [[TextureType(日本語)|二次元]] [[Canvas (日本語)|Canvas]] の表示対象を設定します。次回の ''love.graphics.setCanvas'' が呼ばれるまで全描画操作は指定された [[Canvas (日本語)|Canvas]] へ転送されますが、画面には表示されません。 |
=== 概要 === | === 概要 === | ||
<source lang="lua"> | <source lang="lua"> | ||
Line 33: | Line 40: | ||
{{param|Canvas|canvas1|最初の表示対象。}} | {{param|Canvas|canvas1|最初の表示対象。}} | ||
{{param|Canvas|canvas2|次の表示対象。}} | {{param|Canvas|canvas2|次の表示対象。}} | ||
− | {{param|Canvas|...| | + | {{param|Canvas|...|追加の Canvas を続けて記述します。}} |
+ | === 返値 === | ||
+ | ありません。 | ||
+ | === 注釈 === | ||
+ | 通常、全描画操作は関数に渡された最初の Canvas だけに描画されますが、[[Shader (日本語)|ピクセルシェーダー]]は標準 <code>void effect</code> の代わりに [[love.graphics.newShader (日本語)#Pixel_Shader_Function|<code>vec4 effects</code> 関数]]を用いると変更します。 | ||
+ | |||
+ | 引数 Canvas で指定した表示対象の幅、高さ、および[[TextureMode (日本語)|テクスチャ形式]]は全て同一にしてください。全てのコンピューターが Canvas への複数表示対象に対応しているわけではありません。 [[love.graphics.isSupported (日本語)|love.graphics.isSupported("multicanvas")]] で true が返されたときは、最低でもキャンバスの 4 枚同時有効に対応しています。 | ||
+ | |||
+ | == 関数 == | ||
+ | {{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)}} | ||
== 用例 == | == 用例 == | ||
Line 45: | Line 90: | ||
<source lang="lua"> | <source lang="lua"> | ||
function love.load() | function love.load() | ||
− | + | -- キャンバスの作成。 | |
canvas = love.graphics.newCanvas() | canvas = love.graphics.newCanvas() | ||
− | + | -- 直接的にキャンバスへ描画操作を行います。 | |
love.graphics.setCanvas(canvas) | love.graphics.setCanvas(canvas) | ||
− | + | -- 色付きの正方形を描画します。 | |
− | love.graphics.setColor( | + | love.graphics.setColor(0.8, 0.9, 0.4) |
− | love.graphics.rectangle( | + | love.graphics.rectangle("fill", 0, 0, 100, 100) |
− | + | -- メイン画面への描画を再び有効にします。 | |
love.graphics.setCanvas() | love.graphics.setCanvas() | ||
end | end | ||
function love.draw() | function love.draw() | ||
− | + | -- 拡大したキャンバスを画面へ描画します。 | |
− | love.graphics.setColor( | + | love.graphics.setColor(1, 1, 1) |
− | love.graphics.draw(canvas, 200,100, 0, .5,.5) | + | love.graphics.draw(canvas, 200, 100, 0, 0.5, 0.5) |
end | 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> | </source> | ||
Line 78: | Line 142: | ||
== そのほかの言語 == | == そのほかの言語 == | ||
− | {{i18n|love.graphics.setCanvas}} | + | {{i18n (日本語)|love.graphics.setCanvas}} |
Revision as of 06:48, 23 July 2019
LÖVE 0.8.0 から使用可能 |
love.graphics.setRenderTarget から名称変更。 |
Canvas へ描画操作を取り込みます。
Contents
関数
指定の Canvas へ表示対象を設定します。次回の love.graphics.setCanvas が呼ばれるまで全描画操作は指定された Canvas へ転送されますが、画面には表示されません。
When using a stencil or 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.
概要
love.graphics.setCanvas( canvas, mipmap )
引数
Canvas canvas
- 新規表示対象。
返値
ありません。
関数
画面を初期状態に戻して対象を描画します。つまり、画面への描画を再び有効にします。
概要
love.graphics.setCanvas( )
引数
なし。
返値
ありません。
関数
LÖVE 0.9.0 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
複数同時に 二次元 Canvas の表示対象を設定します。次回の love.graphics.setCanvas が呼ばれるまで全描画操作は指定された Canvas へ転送されますが、画面には表示されません。
概要
love.graphics.setCanvas( canvas1, canvas2, ... )
引数
返値
ありません。
注釈
通常、全描画操作は関数に渡された最初の Canvas だけに描画されますが、ピクセルシェーダーは標準 void effect
の代わりに vec4 effects
関数を用いると変更します。
引数 Canvas で指定した表示対象の幅、高さ、およびテクスチャ形式は全て同一にしてください。全てのコンピューターが Canvas への複数表示対象に対応しているわけではありません。 love.graphics.isSupported("multicanvas") で true が返されたときは、最低でもキャンバスの 4 枚同時有効に対応しています。
関数
LÖVE 11.0 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
Sets the render target to the specified layer/slice and 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.
概要
love.graphics.setCanvas( canvas, slice, mipmap )
引数
Canvas canvas
- The new render target.
number slice
- For cubemaps this is the cube face index to render to (between 1 and 6). For Array textures this is the array layer. For volume textures this is the depth slice. 2D canvases should use a value of 1.
number mipmap (1)
- The mipmap level to render to, for Canvases with mipmaps.
返値
ありません。
関数
LÖVE 11.0 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
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 Canvases and not shown on the screen.
概要
love.graphics.setCanvas( setup )
引数
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.
RenderTargetSetup [1]
- The Canvas to render to.
RenderTargetSetup [2] (nil)
- An additional Canvas to render to, if multiple simultaneous render targets are wanted.
RenderTargetSetup ...
- Additional Canvases to render to, if multiple simultaneous render targets are wanted.
boolean stencil (false)
- Whether an internally managed stencil buffer should be used, if the
depthstencil
field isn't set. boolean depth (false)
- Whether an internally managed depth buffer should be used, if the
depthstencil
field isn't set. RenderTargetSetup depthstencil (nil)
- An optional custom depth/stencil formatted Canvas to use for the depth and/or stencil buffer.
返値
ありません。
注釈
The RenderTargetSetup
parameters can either be a Canvas object, or a table in the following format: {canvas, mipmap=#, layer=#, face=#}
Canvas [1]
- The Canvas to use for this active render target.
number mipmap (1)
- The mipmap level to render to, for Canvases with mipmaps.
number layer (1)
- Only used for Volume and Array-type Canvases. For Array textures this is the array layer to render to. For volume textures this is the depth slice.
number face (1)
- Only used for Cubemap-type Canvases. The cube face index to render to (between 1 and 6)
用例
キャンバスへの描画
function love.load()
-- キャンバスの作成。
canvas = love.graphics.newCanvas()
-- 直接的にキャンバスへ描画操作を行います。
love.graphics.setCanvas(canvas)
-- 色付きの正方形を描画します。
love.graphics.setColor(0.8, 0.9, 0.4)
love.graphics.rectangle("fill", 0, 0, 100, 100)
-- メイン画面への描画を再び有効にします。
love.graphics.setCanvas()
end
function love.draw()
-- 拡大したキャンバスを画面へ描画します。
love.graphics.setColor(1, 1, 1)
love.graphics.draw(canvas, 200, 100, 0, 0.5, 0.5)
end
Advanced setup with the table variant of 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,
})
関連