SDLPainter 1.2.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
Yüklüyor...
Arıyor...
Eşleşme Yok
SDLPainter — Dokümantasyon

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).


📚 Doküman Haritası

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ümanlar

Başlangıç

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)

Mimari

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

Backend Detayı

Doküman İçerik
Backend İç Yapısı OpenGL 3.3 ve Vulkan 1.1 implementasyonu, karşılaştırma, yeni backend ekleme

Docker ve Dağıtım

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ışı

Katkı ve Dokümantasyon

Doküman İçerik
Dokümantasyon Rehberi Doxygen yorum standardı, etiket kullanımı, yerel build, GitLab Pages

Karar Kayıtları

Doküman İçerik
ADR Dizini Architecture Decision Records — neden böyle yapıldı?

🎯 Sık Sorulan Sorular

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.


🔗 İlgili Kaynaklar

  • Repo kök dosyaları: CMakeLists.txt, conanfile.py, CMakePresets.json
  • CI/CD: .gitlab-ci.yml
  • Proje kuralları: .claude/CLAUDE.md, .claude/rules/*.md
  • ADR'ler: adr/ dizini
  • Demo kodları: examples/*.cpp (bkz. examples/README.md)
  • Birim testler: tests/test_*.cpp

📐 Diyagram Notasyonu

Tüm diyagramlar Mermaid formatındadır:

  • ✅ GitHub, GitLab, MkDocs, Obsidian, IntelliJ, VS Code (eklenti) doğrudan render eder
  • ✅ Versiyonlanabilir (markdown içinde düz metin)
  • ✅ Diff'lenebilir (PR review'da değişiklik görülür)
  • ❌ PNG/SVG'ye gerek yok; gerekirse Mermaid CLI ile dışa aktarılabilir

Sınıf diyagramlarında ilişki sembollerinin anlamı için sinif-diyagrami.md → §7.