Canvas (日本語)
LÖVE 0.8.0 から使用可能 |
Framebuffer から名称変更。 |
Canvas (キャンバス、画布) は、作業用の裏画面(バッファ)へオブジェクトを描画します。この画面は視認可能な表画面とは異なり、視認不可能な作業用の裏画面です(複数枚併用可能)。明示的に指定するまで表画面には描画されません。これは『テクスチャ・レンダリング』としても知られています。
座標無変更で頻繁にオブジェクトを描画するとき(例えば背景のアイテム)、アイテム単位ではなく Canvas へ一括描画することにより、各フレームの描画操作の実行回数削減に繋がります。
Version 0.10.0 以前では、 LÖVE により対応している全てのグラフィックスカードで Canvas を使用できるとは限りません。
対応状況の確認は love.graphics.isSupported("canvas") を起動時に呼び出します。
![]() |
通常の透過混合を使用して内容を Canvas へ描画する場合は、その内容にある透過値は RGB 値で乗算されます。
そのため Canvas のピクセル色は描画された時点で 事前乗算透過 になってしまうので、 Canvas を画面または別の Canvas へ描画する時は事前に透過混合を使用する必要があります。 ― love.graphics.setBlendMode("alpha", "premultiplied") |
コンストラクタ
love.graphics.newCanvas (日本語) | Canvas オブジェクトを新規作成します。 | ![]() |
関数
列挙型
MipmapMode (日本語) | Canvas におけるミップマップの有無と動作を制御します。 | ![]() |
上位型
用例
なにか Canvas へ描画してから Canvas を画面に表示します。
function love.load() canvas = love.graphics.newCanvas(800, 600) -- 通常の透過混合方式を設定した Canvas へ長方形を描画します。 love.graphics.setCanvas(canvas) love.graphics.clear() love.graphics.setBlendMode("alpha") love.graphics.setColor(1, 0, 0, 0.5) love.graphics.rectangle('fill', 0, 0, 100, 100) love.graphics.setCanvas() end function love.draw() -- 最重要: 正確な色を表示するために Canvas の描画前に色を再初期化設定してください。 -- こちらの議論を参照してください: https://love2d.org/forums/viewtopic.php?f=4&p=211418#p211418 love.graphics.setColor(1, 1, 1, 1) -- Canvas にある長方形は既に透過混合が適用されています。 -- 不適切な混合方式を防ぐために Canvas への描画時に事前乗算透過混合方式を使用します。 love.graphics.setBlendMode("alpha", "premultiplied") love.graphics.draw(canvas) -- 代わりに通常の透過混合方式を設定して描画された Canvas との差異を観察してください。 love.graphics.setBlendMode("alpha") love.graphics.draw(canvas, 100, 0) -- 通常の透過混合方式を設定した画面へ長方形を直接描画します。 love.graphics.setBlendMode("alpha") love.graphics.setColor(1, 0, 0, 0.5) love.graphics.rectangle('fill', 200, 0, 100, 100) end
関連
- love.graphics (日本語)
- love.graphics.setCanvas (日本語)
- love.graphics.setBlendMode (日本語)
- love.graphics.isSupported (日本語)
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info