|
SDLPainter 1.2.0
SDL3 + OpenGL/Vulkan 2B ç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).
| 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? → 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: sdl-painter-yazilim-muhendisligi.md → Kapsam Yönetimi.
CMakeLists.txt, conanfile.py, CMakePresets.json.gitlab-ci.yml.claude/CLAUDE.md, .claude/rules/*.mdadr/ diziniexamples/*.cpp (bkz. examples/README.md)tests/test_*.cppTüm diyagramlar Mermaid formatındadır:
Sınıf diyagramlarında ilişki sembollerinin anlamı için sinif-diyagrami.md → §7.