love.graphics.setStencilTest (日本語)

LÖVE 0.10.0 から使用可能
love.graphics.stencillove.graphics.setStencil と共に変更されました。

ステンシルにおけるテストを構成または無効にします。

ステンシルテストが有効な時、全ての形状は本関数の引数および形状に接触している各ピクセルのステンシル値との間による比較に基づきクリップ / ステンシル処理されてから描画されます。ピクセルのステンシル値は love.graphics.stencil による影響を受けます。

各々の Canvas はピクセルごとにステンシル値を独自に有しています。

関数

概要

love.graphics.setStencilTest( comparemode, comparevalue )

引数

CompareMode comparemode
各ピクセルの比較方法。
number comparevalue
各ピクセルのステンシル値を比較する時に使用される値。範囲は 0 から 255 までの間にする必要があります。

返値

ありません。

関数

ステンシルのテストを無効にします。

概要

love.graphics.setStencilTest( )

引数

なし。

返値

ありません。

用例

長方形によりマスクされた円を描画します。

local function myStencilFunction()
   love.graphics.rectangle("fill", 225, 200, 350, 300)
end
 
function love.draw()
    -- ステンシルで長方形を描画します。長方形に接触している各ピクセルのステンシル値は 1 に設定されます。それ以外は 0 です。
    love.graphics.stencil(myStencilFunction, "replace", 1)
 
    -- 0 より大きいステンシル値を有するピクセルのみ表示を許可します。
    love.graphics.setStencilTest("greater", 0)
 
    love.graphics.setColor(255, 0, 0, 120)
    love.graphics.circle("fill", 300, 300, 150, 50)
 
    love.graphics.setColor(0, 255, 0, 120)
    love.graphics.circle("fill", 500, 300, 150, 50)
 
    love.graphics.setColor(0, 0, 255, 120)
    love.graphics.circle("fill", 400, 400, 150, 50)
 
    love.graphics.setStencilTest()
end

穴の開いた円を描画します。

local function myStencilFunction()
   -- ステンシルで小型の円を描画します。これは穴が開いています。
   love.graphics.circle("fill", 400, 300, 50)
end
 
function love.draw()
   -- 円に接触している各ピクセルのステンシル値は 1 に設定されます。それ以外は 0 です。
   love.graphics.stencil(myStencilFunction, "replace", 1)
 
   -- ピクセルの表示でステンシル値が 0 と等しくて許可されている場合のみステンシルにおけるテストを構成します。
   -- これはステンシルとして描画された円に接触している*以外*の全ピクセルが対象になります。
   love.graphics.setStencilTest("equal", 0)
   love.graphics.circle("fill", 400, 300, 150)
   love.graphics.setStencilTest()
end

異なる色で 2 つのマスクされた三角形を描画します。

local function myStencilFunction()
   love.graphics.circle("fill", 400, 300, 60, 25)
end
 
function love.draw()
   -- 円に接触している各ピクセルのステンシル値は 1 に設定されます。それ以外は 0 です。
   love.graphics.stencil(myStencilFunction, "replace", 1)
 
   -- 0 より大きいステンシル値を有するピクセルのみ表示を許可します。
   love.graphics.setStencilTest("greater", 0)
   love.graphics.setColor(155, 0, 128)
   love.graphics.polygon("fill", 400, 200, 486, 350, 314, 350)
 
   -- 0 と等しいステンシル値を有するピクセルのみ表示を許可します。
   love.graphics.setStencilTest("equal", 0)
   love.graphics.setColor(144, 214, 128)
   love.graphics.polygon("fill", 400, 200, 486, 350, 314, 350)
 
   love.graphics.setStencilTest()
end

追加の用例は love.graphics.stencil Wiki ページに掲載されています。

関数



そのほかの言語