{{newinoldin|[[0.8.0]]|080|[[0.10.0]]|100|type=function|text=It has been replaced by [[love.graphics.stencil]] and [[love.graphics.setStencilTest]]}}
Defines or releases a stencil for the drawing operations.

The passed function draws to the stencil instead of the screen, creating an image with transparent and opaque pixels. While active, it is used to test where pixels will be drawn or discarded. Image contents do not directly affect the stencil, but see below for a workaround.

Calling the function without arguments releases the active stencil.
== 関数 ==
=== 概要 ===
<source lang="lua">
love.graphics.setStencil( stencilFunction )
</source>
=== 引数 ===
{{param (日本語)|function|stencilFunction|Function that draws the stencil.}}
=== 返値 ===
ありません。
== 関数 ==
Releases the active stencil.
=== 概要 ===
<source lang="lua">
love.graphics.setStencil( )
</source>
=== 引数 ===
なし。
=== 返値 ===
ありません。

== 用例 ==
=== Drawing circles masked by a rectangle ===
<source lang="lua">
myStencilFunction = function()
   love.graphics.rectangle("fill", 225, 200, 350, 300)
end

love.graphics.setStencil(myStencilFunction)

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)
</source>
=== Drawing a circle with a hole ===
<source lang="lua">
myStencilFunction = function()
   love.graphics.circle("fill", 400, 300, 50)
end

love.graphics.setInvertedStencil(myStencilFunction)
love.graphics.circle("fill", 400, 300, 150)
</source>
=== Drawing two masked triangles with different colors ===
<source lang="lua">
myStencilFunction = function()
   love.graphics.circle("fill", 400, 300, 60, 25)
end

love.graphics.setStencil(myStencilFunction)
love.graphics.setColor(155, 0, 128)
love.graphics.polygon("fill", 400, 200, 486, 350, 314, 350)


love.graphics.setInvertedStencil(myStencilFunction)
love.graphics.setColor(144, 214, 128)
love.graphics.polygon("fill", 400, 200, 486, 350, 314, 350)
</source>
=== Using an Image as a stencil mask ===
<source lang="lua">
-- a black/white mask image: black pixels will mask, white pixels will pass.
local mask = love.graphics.newImage("mymask.png")

local mask_effect = love.graphics.newShader[[
   vec4 effect (vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords) {
      if (Texel(texture, texture_coords).rgb == vec3(0.0)) {
         // a discarded pixel wont be applied as the stencil.
         discard;
      }
      return vec4(1.0);
   }
]]

function myStencilFunction()
   love.graphics.setShader(mask_effect)
   love.graphics.draw(mask, 0, 0)
   love.graphics.setShader()
end

love.graphics.setStencil(myStencilFunction)
love.graphics.rectangle("fill", 0, 0, 256, 256)
love.graphics.setStencil()
</source>

== 関連 ==
* [[parent::love.graphics (日本語)]]
* [[love.graphics.setInvertedStencil (日本語)]]
[[Category:Functions (日本語)]]
{{#set:Description=Defines or releases a stencil.}}
{{#set:Since=080}}
{{#set:Sub-Category=State (日本語)}}
== そのほかの言語 ==
{{i18n (日本語)|love.graphics.setStencil}}