# render.PushRenderTarget

- **Ortam:** İstemci
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/render.PushRenderTarget
- **Çeviri tarihi:** 2025-09-08

```lua
render.PushRenderTarget( ITexture texture = nil, number x = 0, number y = 0, number w = texture:Width(), number h = texture:Height() )
```

## Açıklama

Mevcut render hedefini ve viewport'u RT yığınına iter, ardından yeni bir render hedefi ve viewport belirler. Eğer viewport belirtilmezse, bunun yerine render hedefinin boyutları kullanılır.

Bu, mevcut render hedefinin ve viewport'un önceden kaydedildiği [render.SetRenderTarget](https://gmod.tr/wiki/render.SetRenderTarget) ve [render.SetViewPort](https://gmod.tr/wiki/render.SetViewPort) çağrılarına benzer, ancak viewport ekran sınırlarına kırpılmaz.

Ayrıca bakınız: [render.PopRenderTarget](https://gmod.tr/wiki/render.PopRenderTarget).

> **NOT:** Eğer render hedefine 2D modunda render yapmak istiyorsanız ve ekranla aynı boyutta değilse, [cam.Start2D](https://gmod.tr/wiki/cam.Start2D) ve [cam.End2D](https://gmod.tr/wiki/cam.End2D) kullanın.

> **NOT:** Eğer render hedefi ekrandan daha büyükse, surface kütüphanesi ile yapılan render'lama, [DisableClipping](https://gmod.tr/wiki/Global.DisableClipping) fonksiyonunu çağırmadığınız sürece ekran sınırlarına kırpılacaktır.

## Argümanlar

1. [ITexture](https://gmod.tr/wiki/ITexture) **texture** = nil: Kullanılacak yeni render hedefi. Ana oyun çerçeve arabelleğini (frame buffer) itmek için `nil` olarak ayarlanabilir.
2. [number](https://gmod.tr/wiki/number) **x** = 0: Viewport'un X başlangıç noktası.
3. [number](https://gmod.tr/wiki/number) **y** = 0: Viewport'un Y başlangıç noktası.
4. [number](https://gmod.tr/wiki/number) **w** = texture:Width(): Viewport'un genişliği.
5. [number](https://gmod.tr/wiki/number) **h** = texture:Height(): Viewport'un yüksekliği

### Örnek

Özel oluşturulmuş bir Render Target dokusu kullanan bir materyalin nasıl oluşturulacağını gösterir.

```lua
-- Render hedefini oluştur
local exampleRT = GetRenderTarget( "example_rt", 1024, 1024 )

-- Render hedefine çizim yap
render.PushRenderTarget( exampleRT )
	cam.Start2D()
		-- Arka planı çiz
		surface.SetDrawColor( 0, 0, 0, 255 )
		surface.DrawRect( 0, 0, 1024, 1024 )

		-- Ön plana bazı şeyler çiz
		surface.SetDrawColor( 255, 0, 0, 255 )
		surface.DrawRect( 0, 0, 256, 256 )
	cam.End2D()
render.PopRenderTarget()

local customMaterial = CreateMaterial( "example_rt_mat", "UnlitGeneric", {
	["$basetexture"] = exampleRT:GetName(), -- "example_rt" de kullanabilirsiniz
	["$translucent"] = 1,
	["$vertexcolor"] = 1
} )

hook.Add( "HUDPaint", "ExampleDraw", function()
	surface.SetDrawColor( 255, 255, 255, 255 )
	surface.SetMaterial( customMaterial )
	surface.DrawTexturedRect( 0, 0, customMaterial:GetTexture( "$basetexture" ):Width(), customMaterial:GetTexture( "$basetexture" ):Height() )
end )
```

**Çıktı:** Sol üst köşenizde çizilmiş, sol üst köşesinde 256x256 boyutunda kırmızı bir kare bulunan, 1024x1024 boyutunda siyah bir render hedefi.

### Örnek

Render hedefleriyle alfa kanalını nasıl kullanabileceğinizi gösterir.

```lua
render.PushRenderTarget( texture )
render.OverrideAlphaWriteEnable( true, true )

render.ClearDepth()
render.Clear( 0, 0, 0, 0 )

-- Buraya bir şeyler çizin

render.OverrideAlphaWriteEnable( false )
render.PopRenderTarget()
```

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/render.PushRenderTarget
