|
SDLPainter 1.2.0
SDL3 + OpenGL/Vulkan 2B çizim kütüphanesi
|
Bu sayfa içerisinde SDLPainter kütüphanesine yönelik önce çıkan özellikler listelenecektir.
DrawLine)DrawRect / FillRect)DrawRoundedRect / FillRoundedRect)DrawCircle / FillCircle)DrawEllipse / FillEllipse)DrawArc), dilim (DrawPie / FillPie), kiriş (DrawChord / FillChord) — açı birimi derece, 0° = +xDrawPolygon / FillPolygon)DrawPolyline)glLineWidth kullanılmıyor), kesik deseni (SetDashPattern), uç stili (butt/square/round), birleşim stili (miter/bevel/round — miter sınırı aşılınca kendiliğinden bevel'a düşer)[0.0, 1.0]kAlpha / kAdditive / kMultiply / kNone. GPU durumu olduğu için batch'i kırar; Vulkan'da mod başına pipeline varyantı başlangıçta üretilirPath — doğru parçaları, quadratic (QuadTo) ve cubic (CubicTo) Bézier eğrileri; her MoveTo yeni bir alt yol başlatır, Close alt yolu kapatırFlatness, varsayılan 0.25 px): kontrol noktası saklanmaz, tessellator'a dokunulmaz ve kalemin tüm stilleri (kesik, uç, birleşim) eğride de çalışırDrawPath çerçeveyi, FillPath dolguyu çizerFillPath her alt yolu bağımsız doldurur — even-odd / nonzero kuralı yok, dolayısıyla "O" harfi gibi delikli şekiller doğru dolmazTranslate, Rotate, ScaleSave / RestoreResetTransformglm::mat3 (column-major), bkz. ADR-007SetClipRect / ClearClip)SetViewport / ResetViewport — çizimi bir alt dikdörtgenle sınırlar ve koordinatları ona yerelleştirir (bölünmüş ekran, mini harita)ImageFlip) — ikisi de vertex'te taşındığı için batch'i kırmazkLinear (varsayılan) / kNearest (piksel sanatı)Painter::UpdateImage ile yerinde doku güncelleme (her karede değişen prosedürel dokular)Painter::DrawImageMesh ile serbest biçimli dokulu ızgara — köşeler bağımsız hareket edebilirPainter::CreateRenderTarget ile ekran yerine dokuya çizim — mini harita, son işlem efektleri, iz efekti, pahalı ama nadir değişen katmanların önbelleklenmesiSetRenderTarget / ResetRenderTarget; hedef bağlıyken koordinatlar hedefe yereldir ve iki backend'de piksel piksel aynı sonucu verirDrawRenderTarget ile hedefi bir görüntü gibi (tint ve aynalama dahil) basReadRenderTarget ile pikselleri doğrusal RGBA8 olarak geri oku — ekran görüntüsü ve backend parite testleri bunu kullanırFont::LineHeight()TextWrap::kWord) — UTF-8 güvenli; CountTextLines() ile çizmeden satır sayısımax(16, int(radius * 0.5f))Her çizim çağrısı doğrudan GPU'ya gitmez; RenderBatcher vertex'leri bir arabellekte biriktirir ve yalnızca mod, texture veya opacity değiştiğinde (ya da 8192 vertex limiti dolduğunda) Flush() ile toplu olarak renderer'a iletir. Bu yaklaşım, özellikle çok sayıda küçük şeklin ard arda çizildiği sahnelerde draw call sayısını ciddi ölçüde azaltır.
IRenderer arayüzü — yeni backend eklemek için tek implementasyon noktasılinux-debug, linux-release, linux-debug-coverage, linux-debug-asan, windows-debug, windows-release, windows-mingw-debug, windows-mingw-release)-o "&:with_vulkan=True")linux-debug-asan)