love.graphics.setStencilTest (日本語)
LÖVE 0.10.0 から使用可能 |
love.graphics.stencil は love.graphics.setStencil と共に変更されました。 |
ステンシルにおけるテストを構成または無効にします。
ステンシルテストが有効な時、全ての形状は本関数の引数および形状に接触している各ピクセルのステンシル値との間による比較に基づきクリップ、またはステンシル処理されてから描画されます。ピクセルのステンシル値は love.graphics.stencil による影響を受けます。
version 11.0 より、ステンシル・バッファの設定、または Canvas でステンシルを用いるときは love.graphics.setCanvas で指定してください。この場合、 love.graphics.setCanvas{canvas, stencil=true} は自動作成された一時作業用のステンシル・バッファを用いるのに簡単な方法です。
|
Contents
関数
概要
love.graphics.setStencilTest( comparemode, comparevalue )
引数
CompareMode comparemode
- 各ピクセルの比較方法。
number comparevalue
- 各ピクセルのステンシル値の比較時に用いる 0 ~ 255 までの値。
返値
ありません。
関数
ステンシルのテストを無効にします。
概要
love.graphics.setStencilTest( )
引数
なし。
返値
ありません。
用例
長方形、多角形と円形でマスクした円の描画
local function myStencilFunction1()
love.graphics.rectangle("fill", 225, 200, 350, 300)
end
local function myStencilFunction2()
love.graphics.polygon ("fill", 225, 200, 400, 100, 575, 200)
end
local function myStencilFunction3()
love.graphics.circle ("fill", 400, 200, 60)
end
function love.draw()
-- ステンシルで長方形を描画します。長方形に接触する各ピクセルのステンシル値は 1 に、それ以外は 0 となります。
love.graphics.stencil (myStencilFunction1, "replace", 1)
-- ステンシルで多角形を描画します。多角形に接触する各ピクセルのステンシル値は 1 に、それ以外は無変更となります。
love.graphics.stencil (myStencilFunction2, "replace", 2, true)
-- ステンシルから円形を削除します。円形に接触する各ピクセルのステンシル値は 1 にデクリメント、それ以外は無変更となります。
love.graphics.stencil (myStencilFunction3, "decrement", 1, true)
-- 0 より大きいステンシル値のピクセルのみレンダリングします。
love.graphics.setStencilTest ("greater", 0)
love.graphics.setColor(1, 0, 0, 0.8)
love.graphics.circle("fill", 300, 300, 150)
love.graphics.setColor(0, 1, 0, 0.6)
love.graphics.circle("fill", 500, 300, 150)
love.graphics.setColor(0, 0, 1, 0.6)
love.graphics.circle("fill", 400, 400, 150)
love.graphics.setColor(1, 1, 1, 1)
love.graphics.circle("fill", 400, 100, 117)
love.graphics.setStencilTest()
end
穴の開いた円の描画
local function myStencilFunction()
-- ステンシルで小型の円を描画します。これは穴が開いています。
love.graphics.circle("fill", 400, 300, 50)
end
function love.draw()
-- Each pixel touched by the circle will have its stencil value set to 1. The rest will be 0.
love.graphics.stencil(myStencilFunction, "replace", 1)
-- ピクセルの表示でステンシル値が 0 と等しくて許可されている場合のみステンシルにおけるテストを構成します。
-- これはステンシルとして描画された円に接触している*以外*の全ピクセルが対象になります。
love.graphics.setStencilTest("equal", 0)
love.graphics.circle("fill", 400, 300, 150)
love.graphics.setStencilTest()
end
異色でマスクした三角形二種を描画
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(0.6, 0, 0.5)
love.graphics.polygon("fill", 400, 200, 486, 350, 314, 350)
-- 0 と等しいステンシル値のピクセルのみ表示を許可します。
love.graphics.setStencilTest("equal", 0)
love.graphics.setColor(0.55, 0.85, 0.5)
love.graphics.polygon("fill", 400, 200, 486, 350, 314, 350)
love.graphics.setStencilTest()
end
追加の用例は love.graphics.stencil Wiki ページに掲載されています。
関連
そのほかの言語
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