|
SDLPainter 1.2.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
|
SDL3 + OpenGL/Vulkan dual backend destekli C++ 2B çizim kütüphanesinin teknik dokümantasyonu. Bu teknik dokümanlar genel olarak Türkçe, vakit oldukça bunları da İngilizce'ye çeviriyor olabiliriz (desteğe hayır demem).
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ıç · Getting Started | Önkoşullar, kurulum, ilk uygulama, sık sorunlar |
| Özellik Listesi | Desteklenen primitifler, stiller, backend'ler |
| Örnekler · 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ı | 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. 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? → Hayır (şimdilik). 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.