# surface.DrawPoly

- **Ortam:** İstemci, Menü
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/surface.DrawPoly
- **Çeviri tarihi:** 2025-09-08

```lua
surface.DrawPoly( table vertices )
```

## Açıklama

Maksimum 4096 köşe noktasına sahip dokulu bir çokgen (aslında bir üçgen yelpazesi) çizer. Sadece dışbükey (konveks) çokgenlerle düzgün çalışır. İçbükey (konkav) çokgenleri de render etmeyi deneyebilirsiniz, ancak işlerin karışmayacağının bir garantisi yoktur.

Çoğu surface kütüphanesi fonksiyonunun aksine, tam sayı olmayan koordinatlar yuvarlanmaz.

> **UYARI:** Tutarlı sonuçlar elde etmek için fonksiyonu çağırmadan önce çizim rengini ve dokusunu sıfırlamanız gerekir. Aşağıdaki örneklere bakın.

> **NOT:** Bu, 2 boyutlu bir render bağlamı gerektiren bir render fonksiyonudur.
>
> Bu, yalnızca [2 Boyutlu Render Hook'ları](https://gmod.tr/wiki/2D_Rendering_Hooks) içinde çalışacağı anlamına gelir.

## Argümanlar

1. [table](https://gmod.tr/wiki/table) **vertices**: Tamsayı köşe noktaları içeren bir tablo. [PolygonVertex yapısı](https://gmod.tr/wiki/Structures/PolygonVertex) sayfasına bakın. **Köşe noktaları saat yönünde sıralanmalıdır.**

### Örnek

Ekranın sol üst köşesine kırmızı bir üçgen çizer.

```lua
local triangle = {
	{ x = 100, y = 200 },
	{ x = 150, y = 100 },
	{ x = 200, y = 200 }
}

hook.Add("HUDPaint", "PolygonTest", function()

	surface.SetDrawColor( 255, 0, 0, 255 )
	draw.NoTexture()
	surface.DrawPoly( triangle )

end )
```

**Çıktı:** ![](https://gmod.tr/api/uploads/wiki/64307d4966b7f80f22fd.png)

### Örnek

Ekranın sol üst köşesine sarı bir çokgen çizer.

```lua
local triangle = {
	{ x = 100, y = 200 },

	{ x = 150, y = 100 },
	{ x = 200, y = 200 },
	{ x = 150, y = 300 },
	{ x = 100, y = 300 },
}

hook.Add("HUDPaint", "PolygonExample", function()

	surface.SetDrawColor( 255, 255, 0, 255 )
	draw.NoTexture()
	surface.DrawPoly( triangle )

end )
```

**Çıktı:**

![drawpoly_example.png](https://gmod.tr/api/uploads/wiki/ea394a2c1df31c45eb2b.png)

### Örnek

surface.DrawPoly kullanarak bir daire çizen yardımcı bir fonksiyon.

```lua
function draw.Circle( x, y, radius, seg )
	local cir = {}

	table.insert( cir, { x = x, y = y, u = 0.5, v = 0.5 } )
	for i = 0, seg do
		local a = math.rad( ( i / seg ) * -360 )
		table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 } )
	end

	local a = math.rad( 0 ) -- Bu, mutlak olmayan segment sayıları için gereklidir
	table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 } )

	surface.DrawPoly( cir )
end

hook.Add("HUDPaint", "PolygonCircleTest", function()

	surface.SetDrawColor( 0, 0, 0, 200)
	draw.NoTexture()
	draw.Circle( ScrW() / 2, ScrH() / 2, 200, math.sin( CurTime() ) * 20 + 25 )

	--Kullanım:
	--draw.Circle( x, y, yarıçap, segmentler )

end )
```

- [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/surface.DrawPoly
