Canvas (日本語)

LÖVE 0.8.0 から使用可能
Framebuffer から名称変更。

Canvas (キャンバス、画布) は画面外表示で使用されます。つまり描画はできるが可視の実画面に描画されるまでは表示されない不可視の画面と考えることができます。さらに "テクスチャの表示" としても知られています。

Canvas へ座標を変更せず頻繁に描画を行うとき(例えば背景にあるアイテム)、各アイテムごとではなく Canvas へ全て描画することにより、各フレームの描画操作の実行回数を削減できます。

Version 0.10.0 以前は、 LÖVE により対応している全てのグラフィックスカードで Canvas を使用できるとは限りません。 love.graphics.isSupported("canvas") は実行時に対応状況を調べるために使用できます。


O.png 通常の透過混合を使用して内容を Canvas へ描画する場合は、その内容にある透過値は RGB 値で乗算されます。

そのため Canvas のピクセル色は描画された時点で 事前乗算透過 になってしまうので、 Canvas を画面または別の Canvas へ描画する時は事前に透過混合を使用する必要があります。 ― love.graphics.setBlendMode("alpha", "premultiplied")

 

コンストラクタ

love.graphics.newCanvas (日本語) Canvas オブジェクトを新規作成します。 Added since 0.8.0

関数

Canvas:clear (日本語) Canvas の内容を消去します。 Added since 0.8.0 Removed in 0.10.0
Canvas:getFSAA (日本語) Canvas の描画時に使用するアンチエイリアシングのサンプル数を取得します。 Added since 0.9.1 Removed in 0.10.0
Canvas:getFormat (日本語) Canvas のテクスチャ形式を取得します。 Added since 0.9.1
Canvas:getImageData (日本語) Canvas の内容から ImageData を生成します。 Added since 0.8.0 Removed in 0.10.0
Canvas:getMSAA (日本語) Canvas の描画時に使用するマルチサンプル・アンチエイリアシング (Multi Sample Anti-Alias : MSAA) のサンプル数を取得します。 Added since 0.9.2
Canvas:getPixel (日本語) 指定された座標にある Canvas のピクセルを取得します。 Added since 0.9.0 Removed in 0.10.0
Canvas:newImageData (日本語) Canvas の内容から ImageData を生成します。 Added since 0.10.0
Canvas:renderTo (日本語) Canvas へ表示するために関数を使用します。 Added since 0.8.0
Object:type (日本語) オブジェクトの種類を文字列形式で取得します。
Object:typeOf (日本語) オブジェクトが特定の種類かどうか確認します。
Texture:getDimensions (日本語) Texture の幅と高さを取得します。 Added since 0.9.0
Texture:getFilter (日本語) Textureフィルタ方式を取得します。
Texture:getHeight (日本語) Texture の高さを取得します。
Texture:getWidth (日本語) Texture の幅を取得します。
Texture:getWrap (日本語) Texture の加工特性を取得します。
Texture:setFilter (日本語) Textureフィルタ方式を設定します。
Texture:setWrap (日本語) Texture の加工特性を設定します。

上位型

用例

なにか 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(255, 0, 0, 128)
        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(255, 255, 255, 255)
 
    -- 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(255, 0, 0, 128)
    love.graphics.rectangle('fill', 200, 0, 100, 100)
end

関連



そのほかの言語