|
SDLPainter 1.4.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
|
[Türkçe sürüm](../README.md) | **English**
Technical documentation of the C++ 2D drawing library with an SDL3 + OpenGL/Vulkan dual backend. The documents were originally written in Turkish; this directory holds their English versions.
flowchart LR
Start(["🚀 I'm using it for the first time"]) --> Quick["getting-started.md"]
Quick --> Examples["examples-guide.md"]
Quick --> Features["features.md"]
Arch(["🏗️ I want to understand the architecture"]) --> Overview["architecture.md"]
Overview --> Class["class-diagram.md"]
Overview --> Flow["flows.md"]
Overview --> SE["software-engineering.md"]
Backend(["⚙️ Backend implementation"]) --> BImpl["backend-internals.md"]
BImpl --> ADR["../../adr/"]
Docker(["🐳 Docker / CI images"]) --> Doc["docker.md"]
Doc --> Dep["docker-hub-deployment.md"]
Contrib(["🛠️ I want to contribute"]) --> 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
| Document | Contents |
|---|---|
| Getting Started | Prerequisites, setup, first application, common problems |
| Feature List | Supported primitives, styles, backends |
| Examples Guide · examples/README.md | Usage examples and code snippets |
| Building · Scripts · Development | Building, Docker, script reference, quality checks, CI/CD |
| Document | Contents |
|---|---|
| Architecture Overview | Layers, component dependencies, source tree, contracts |
| Class Diagram | UML class diagram (Mermaid) — Painter, render pipeline, images, backends |
| Flow Diagrams | Frame lifecycle, draw call, batch flush, transform stack, texture upload, Vulkan frame |
| Software Engineering Perspective | Rationale behind the design decisions, SOLID, scope management |
| Document | Contents |
|---|---|
| Backend Internals | OpenGL 3.3 and Vulkan 1.1 implementation, comparison, adding a new backend |
| Document | Contents |
|---|---|
| Docker User Guide | Image hierarchy, builder/ci/windows-cross stages, GitLab CI integration, Dockerfile.windows |
| Publishing to Docker Hub | Image build, tagging, pushing to Hub/GitLab Registry, automated CI/CD flow |
| Document | Contents |
|---|---|
| Documentation Guide | Doxygen comment standard, tag usage, local build, GitLab Pages |
| Document | Contents |
|---|---|
| ADR Index | Architecture Decision Records — why was it done this way? (the records are in Turkish) |
1. I know QPainter, how do I switch to SDLPainter? → Getting Started. The API is largely the same; Save/Restore, SetPen/SetBrush, DrawRect/FillRect are semantically identical.
2. Does the user notice any difference between OpenGL and Vulkan? → No. The only change is the constructor argument (RendererBackend::kVulkan). All Painter API calls work the same way. Details: backend-internals.md → §4.
3. I want to add a new backend (e.g. DirectX, Metal). → Implementing the IRenderer interface is all it takes. Of course, if you set out on that road, I'd be glad if you gave me a nudge too :)
Details: backend-internals.md → §5.
4. How is the performance? → RenderBatcher merges draw calls that arrive with the same state into a single GPU call. 100 FillRects of the same color = 1 draw call.
TODO: Let's add a detailed test for this along with its output.
Details: flows.md → §3.
5. Are Path / Bezier / Gradient supported? → Yes. Path carries line segments and quadratic/cubic Bézier curves (DrawPath / FillPath); Brush::LinearGradient and Brush::RadialGradient give a two-stop transition. Limits: no fills with holes (even-odd / nonzero) and no multi-stop / conical gradients. Rationale: software-engineering.md → Scope Management.
All diagrams are in Mermaid format:
For the meaning of the relationship symbols in class diagrams see class-diagram.md → §7.