render.ClearBuffersObeyStencil

  render.ClearBuffersObeyStencil( number red, number green, number blue, number alpha, boolean clearDepth )

Açıklama

Aktif Render Target'ın her pikselini mevcut Stencil yapılandırmasına göre test eder ve testi geçen her piksel için Renk Kanalı değerlerini ve isteğe bağlı olarak Derinlik Arabelleği (Depth Buffer) değerlerini ayarlar.

Stencil sistemi hakkında kullanım örnekleri de dahil olmak üzere daha ayrıntılı bilgi için Stencils Render Reference sayfasına bakın.

Bu fonksiyon tek başına Stencil Arabelleği'ni (Stencil Buffer) temizlemez.
Eğer Stencil Arabelleği'ni temizlemek isterseniz, render.ClearStencil fonksiyonunu kullanabilirsiniz.

Argümanlar

1 number red
Temizlenen her piksel için kırmızı Renk Kanalı değeri.
0-255 aralığında bir tamsayı değeri (byte) olmalıdır.
2 number green
Temizlenen her piksel için yeşil Renk Kanalı değeri.
0-255 aralığında bir tamsayı değeri (byte) olmalıdır.
3 number blue
Temizlenen her piksel için mavi Renk Kanalı değeri.
0-255 aralığında bir tamsayı değeri (byte) olmalıdır.
4 number alpha
Temizlenen her piksel için alfa (yarı saydamlık) Renk Kanalı değeri.
0-255 aralığında bir tamsayı değeri (byte) olmalıdır.
5 boolean clearDepth
Eğer true ise, Derinlik Arabelleği (Depth Buffer) değerlerini sıfırlar.

Örnek

Stencil arabelleği aracılığıyla ekranın bir bölümünü temizleme (Lex'in Stencil Eğitimi'nden alınmıştır).

hook.Add( "PostDrawOpaqueRenderables", "Stencil Tutorial Example", function() -- Her şeyi bilinen iyi duruma sıfırla render.SetStencilWriteMask( 0xFF ) render.SetStencilTestMask( 0xFF ) render.SetStencilReferenceValue( 0 ) render.SetStencilCompareFunction( STENCIL_ALWAYS ) render.SetStencilPassOperation( STENCIL_KEEP ) render.SetStencilFailOperation( STENCIL_KEEP ) render.SetStencilZFailOperation( STENCIL_KEEP ) render.ClearStencil() -- Stencil'ları etkinleştir render.SetStencilEnable( true ) -- Referans değerini 1 olarak ayarla. Karşılaştırma fonksiyonunun test ettiği değer budur render.SetStencilReferenceValue( 1 ) -- O pikselin değeri 1 olmadığı sürece ekrana bir şey yazmayı reddet render.SetStencilCompareFunction( STENCIL_EQUAL ) -- Ekranın merkezdeki üçte birlik kısmına 1 yaz. Daha önce temizlediğimiz için şu anda her şey 0 local w, h = ScrW() / 3, ScrH() / 3 local x_start, y_start = w, h local x_end, y_end = x_start + w, y_start + h render.ClearStencilBufferRectangle( x_start, y_start, x_end, y_end, 1 ) -- Render kütüphanesine ekranı temizlemesini, ancak stencil test fonksiyonuna uymasını söyle. -- Bu, yalnızca merkezdeki üçte birlik kısmı temizleyeceği anlamına gelir. render.ClearBuffersObeyStencil( 0, 148, 133, 255, false ) -- Her şeyin tekrar normal şekilde render edilmesine izin ver render.SetStencilEnable( false ) end )
Çıktı:

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