Canvas (日本語)
LÖVE 0.8.0 から使用可能 |
Framebuffer から名称変更。 |
Canvas (キャンバス、画布) は画面外表示で使用されます。つまり描画はできるが可視の実画面に描画されるまでは表示されない不可視の画面と考えることができます。さらに "テクスチャの表示" としても知られています。
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 オブジェクトを新規作成します。 | 0.8.0 |
関数
列挙型
MipmapMode (日本語) | Canvas におけるミップマップの有無と動作を制御します。 | 11.0 |
上位型
用例
なにか 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