render.ClearStencilBufferRectangle
Örnek: Yatay Silme Efekti
Bu örnek, çizilen iki öğe arasında bir "silme" (wipe) geçiş efekti gerçekleştirmek için bu fonksiyonun nasıl kullanılacağını gösterir.
local COLOR_BLUE = Color( 65, 98, 214 )
local COLOR_RED = Color( 214, 44, 100 )
local colorMaterial = Material( "color" )
hook.Add( "PostDrawTranslucentRenderables", "StencilExampleClearStencilBufferRectangle", function()
-- Şablon (Stencil) sisteminin ayarlarını sıfırla
render.SetStencilTestMask( 255 )
render.SetStencilWriteMask( 255 )
render.SetStencilFailOperation( STENCILOPERATION_KEEP )
render.SetStencilPassOperation( STENCILOPERATION_KEEP )
render.SetStencilZFailOperation( STENCILOPERATION_KEEP )
-- Tüm Şablon Tamponu (Stencil Buffer) değerlerini 0'a sıfırla
render.ClearStencil()
-- Yalnızca Şablon Tamponu (Stencil Buffer) değeri Şablon Referans (Stencil Reference) değerine eşit olan pikselleri geçir
render.SetStencilCompareFunction( STENCILCOMPARISONFUNCTION_EQUAL )
-- Bu X koordinatının solundaki ve sağındaki her şeyi maskeleyeceğiz
-- Ekranın ortasından başlar ve math.sin sayesinde ileri geri hareket eder
local verticalSplitX = ScrW()/2 + math.sin( CurTime() ) * ScrW()/8
-- Dikey ayrımın sol tarafındaki tüm pikseller için Şablon Tamponu (Stencil Buffer) değerini 1'e ayarla
render.ClearStencilBufferRectangle( 0, 0, verticalSplitX, ScrH(), 1 )
-- Dikey ayrımın sağ tarafındaki tüm pikseller için Şablon Tamponu (Stencil Buffer) değerini 2'ye ayarla
render.ClearStencilBufferRectangle( verticalSplitX, 0, ScrW(), ScrH(), 2 )
cam.Start2D()
render.SetStencilEnable( true )
-- Yalnızca Şablon Tamponu (Stencil Buffer) değeri 1'e eşit olan piksellerde render yap (Sol taraf)
render.SetStencilReferenceValue( 1 )
-- Ekranın ortasına, yalnızca ekranın sol yarısına maskelenecek bir dikdörtgen çiz
surface.SetDrawColor( COLOR_BLUE )
surface.SetMaterial( colorMaterial )
surface.DrawTexturedRectRotated( ScrW()/2, ScrH()/2, ScrW()/8, ScrW()/8, math.sin( CurTime() ) * 360 )
-- Yalnızca Şablon Tamponu (Stencil Buffer) değeri 2'ye eşit olan piksellerde render yap (Sağ taraf)
render.SetStencilReferenceValue( 2 )
-- Ekranın ortasına, yalnızca ekranın sağ yarısına maskelenecek bir dikdörtgen çiz
surface.SetDrawColor( COLOR_RED )
surface.DrawTexturedRectRotated( ScrW()/2, ScrH()/2, ScrW()/8, ScrW()/8, math.cos( CurTime() ) * 360 )
render.SetStencilEnable( false )
cam.End2D()
end )
Çıktı: Aşağıdaki resimde, ekranın merkezinde hareket eden dikey ayrımın, her ikisi de aynı konumda çizilen iki dikdörtgeni nasıl ortaya çıkardığını ve gizlediğini görebilirsiniz.


Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord