render.ClearStencilBufferRectangle

  render.ClearStencilBufferRectangle( number startX, number startY, number endX, number endY, number stencilBufferValue )

Açıklama

Belirli bir dikdörtgen içindeki her piksel için Şablon Tamponu (Stencil Buffer) değerini verilen bir değere ayarlar.

Bu, render.SetStencilWriteMask'tan etkilenmez.

Şablon (Stencil) sistemi hakkında kullanım örnekleri de dahil olmak üzere daha detaylı bilgi için Şablonlar Render Referansı sayfasına bakınız.

Argümanlar

1 number startX
Temizlenecek dikdörtgenin sol üst köşesinin X koordinatı.
2 number startY
Temizlenecek dikdörtgenin sol üst köşesinin Y koordinatı.
3 number endX
Temizlenecek dikdörtgenin sağ alt köşesinin X koordinatı.
Not: Diğer bazı dikdörtgen tabanlı fonksiyonların aksine, bu dikdörtgenin genişliği değildir.
4 number endY
Temizlenecek dikdörtgenin sağ alt köşesinin Y koordinatı.
Not: Diğer bazı dikdörtgen tabanlı fonksiyonların aksine, bu dikdörtgenin yüksekliği değildir.
5 number stencilBufferValue
Dikdörtgen içindeki tüm piksellerin ayarlanacağı Şablon Tamponu (Stencil Buffer) değeri.

Ö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