|
SDLPainter 1.4.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
|
Türkçe | English version
SDL3 + OpenGL/Vulkan dual backend destekli C++ 2B çizim kütüphanesinin teknik dokümantasyonu. Dokümanların İngilizce sürümleri en/ dizinindedir.
flowchart LR
Start(["🚀 İlk defa kullanıyorum"]) --> Quick["hizli-baslangic.md"]
Quick --> Examples["ornekler.md"]
Quick --> Features["ozellikler.md"]
Arch(["🏗️ Mimariyi anlamak istiyorum"]) --> Overview["mimari-genel-bakis.md"]
Overview --> Class["sinif-diyagrami.md"]
Overview --> Flow["akislar.md"]
Overview --> SE["yazilim-muhendisligi.md"]
Backend(["⚙️ Backend implementasyonu"]) --> BImpl["backend-ic-yapisi.md"]
BImpl --> ADR["../adr/"]
Docker(["🐳 Docker / CI imajları"]) --> Doc["docker.md"]
Doc --> Dep["docker-hub-deployment.md"]
Contrib(["🛠️ Katkı yapmak istiyorum"]) --> Class
Contrib --> Flow
Contrib --> SE
Contrib --> ADR
style Start fill:#1f6feb,color:#fff
style Arch fill:#2da44e,color:#fff
style Backend fill:#cf222e,color:#fff
style Docker fill:#0db7ed,color:#fff
style Contrib fill:#bf8700,color:#fff
| Doküman | İçerik |
|---|---|
| Hızlı Başlangıç · Getting Started | Önkoşullar, kurulum, ilk uygulama, sık sorunlar |
| Özellik Listesi · Features | Desteklenen primitifler, stiller, backend'ler |
| Örnekler · Examples Guide · examples/README.md | Kullanım örnekleri ve kod parçaları |
| Building · Scripts · Development | Derleme, Docker, script referansı, kalite kontrolleri, CI/CD (İngilizce) |
| Doküman | İçerik |
|---|---|
| Mimari Genel Bakış · Architecture | Katmanlar, bileşen bağımlılıkları, kaynak ağacı, sözleşmeler |
| Sınıf Diyagramı · Class Diagram | UML class diagram (Mermaid) — Painter, render hattı, görseller, backend'ler |
| Akış Diyagramları · Flows | Frame yaşam döngüsü, draw call, batch flush, transform stack, texture upload, Vulkan frame |
| Yazılım Mühendisliği Perspektifi · Software Engineering | Tasarım kararlarının gerekçeleri, SOLID, kapsam yönetimi |
| Doküman | İçerik |
|---|---|
| Backend İç Yapısı · Backend Internals | OpenGL 3.3 ve Vulkan 1.1 implementasyonu, karşılaştırma, yeni backend ekleme |
| Doküman | İçerik |
|---|---|
| Docker Kullanım Kılavuzu · Docker Guide | İmaj hiyerarşisi, builder/ci/windows-cross aşamaları, GitLab CI entegrasyonu, Dockerfile.windows |
| Docker Hub'a Dağıtım · Publishing to Docker Hub | İmaj build, etiketleme, Hub/GitLab Registry'ye push, otomatik CI/CD akışı |
| Doküman | İçerik |
|---|---|
| Dokümantasyon Rehberi · Documentation Guide | Doxygen yorum standardı, etiket kullanımı, yerel build, GitLab Pages |
| Doküman | İçerik |
|---|---|
| ADR Dizini | Architecture Decision Records — neden böyle yapıldı? |
1. QPainter biliyorum, SDLPainter'a nasıl geçerim? → Hızlı Başlangıç. API büyük ölçüde aynı; Save/Restore, SetPen/SetBrush, DrawRect/FillRect semantik olarak özdeş.
2. OpenGL ve Vulkan arasındaki fark kullanıcı tarafından hissedilir mi? → Hayır. Tek değişiklik constructor argümanı (RendererBackend::kVulkan). Tüm Painter API çağrıları aynı şekilde çalışır. Detay: backend-ic-yapisi.md → §4.
3. Yeni bir backend eklemek istiyorum (örn. DirectX, Metal). → Sadece IRenderer arayüzünü implemente etmek yeterli. Elbette böyle bir yola girecekseniz beni de bir dürterseniz sevinirim :)
Detay: backend-ic-yapisi.md → §5.
4. Performans nasıl? → RenderBatcher aynı state ile gelen draw call'ları tek bir GPU çağrısına birleştirir. 100 aynı renkli FillRect = 1 draw call.
TODO: Buna yönelik detaylı bir test ve çıktısını ekleyelim.
Detay: akislar.md → §3.
5. Path / Bezier / Gradient destekleniyor mu? → Evet. Path doğru parçaları ve quadratic/cubic Bézier taşır (DrawPath / FillPath); Brush::LinearGradient ve Brush::RadialGradient iki duraklı geçiş verir. Sınırlar: delikli dolgu (even-odd / nonzero) ve çok duraklı / conical gradient yok. Gerekçeler: yazilim-muhendisligi.md → Kapsam Yönetimi.
Tüm diyagramlar Mermaid formatındadır:
Sınıf diyagramlarında ilişki sembollerinin anlamı için sinif-diyagrami.md → §7.