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 オブジェクトを新規作成します。 | 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