|
SDLPainter 0.1.0
QPainter benzeri SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
|
QPainter benzeri, SDL3 + OpenGL/Vulkan dual backend destekli C++ 2D çizim kütüphanesinin teknik dokümantasyonu.
flowchart LR
Start(["🚀 İlk defa kullanıyorum"]) --> Quick["hizli-baslangic.md"]
Quick --> Examples["sdl-painter-ornekler.md"]
Quick --> Features["sdl-painter-ozellikler.md"]
Arch(["🏗️ Mimariyi anlamak istiyorum"]) --> Overview["mimari-genel-bakis.md"]
Overview --> Class["sinif-diyagrami.md"]
Overview --> Flow["akislar.md"]
Overview --> SE["sdl-painter-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ıç | Önkoşullar, kurulum, ilk uygulama, sık sorunlar |
| 📝 Özellik Listesi | Desteklenen primitifler, stiller, backend'ler |
| 💡 Örnekler | Kullanım örnekleri ve kod parçaları |
| Doküman | İçerik |
|---|---|
| 🏗️ Mimari Genel Bakış | Katmanlar, bileşen bağımlılıkları, kaynak ağacı, sözleşmeler |
| 🧩 Sınıf Diyagramı | UML class diagram (Mermaid) — Painter, render hattı, görseller, backend'ler |
| 🔄 Akış Diyagramları | Frame yaşam döngüsü, draw call, batch flush, transform stack, texture upload, Vulkan frame |
| 🏛️ Yazılım Mühendisliği Perspektifi | Tasarım kararlarının gerekçeleri, SOLID, kapsam yönetimi |
| Doküman | İçerik |
|---|---|
| ⚙️ Backend İç Yapısı | OpenGL 3.3 ve Vulkan 1.1 implementasyonu, karşılaştırma, yeni backend ekleme |
| Doküman | İçerik |
|---|---|
| 🐳 Docker Kullanım Kılavuzu | İmaj hiyerarşisi, builder/ci/windows-cross aşamaları, GitLab CI entegrasyonu, Dockerfile.windows |
| 📦 Docker Hub'a Dağıtım | İmaj build, etiketleme, Hub/GitLab Registry'ye push, otomatik CI/CD akışı |
| Doküman | İçerik |
|---|---|
| 📝 Dokümantasyon Rehberi | 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. 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. Detay: akislar.md → §3.
5. Path / Bezier / Gradient destekleniyor mu? → Hayır, v1 kapsam dışı. Gerekçeler: sdl-painter-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.