3#include "sdl_painter/export.h"
12namespace sdl_painter {
19using TextureHandle = uint32_t;
22constexpr TextureHandle kInvalidTexture = 0;
25using RenderTargetHandle = uint32_t;
29constexpr RenderTargetHandle kInvalidRenderTarget = 0;
36enum class TextureFilter : uint8_t {
48enum class BlendMode : uint8_t {
65inline constexpr std::size_t kBlendModeCount = 4;
68enum class RendererBackend : uint8_t {
79 IRenderer() =
default;
80 virtual ~IRenderer() =
default;
84 IRenderer(
const IRenderer&) =
delete;
85 IRenderer& operator=(
const IRenderer&) =
delete;
86 IRenderer(IRenderer&&) =
delete;
87 IRenderer& operator=(IRenderer&&) =
delete;
136 int32_t height, int32_t channels) = 0;
146 int32_t height, int32_t channels,
147 TextureFilter filter) {
171 int32_t width, int32_t height,
172 const uint8_t* data) = 0;
179 TextureHandle texture) = 0;
199 TextureFilter filter) {
203 return kInvalidRenderTarget;
219 RenderTargetHandle handle)
const {
221 return kInvalidTexture;
255 std::size_t byte_capacity) {
263 [[nodiscard]]
virtual RendererBackend
GetBackend()
const = 0;
291SDLPAINTER_API std::unique_ptr<IRenderer> CreateRenderer(
292 RendererBackend backend);
virtual void DestroyTexture(TextureHandle handle)=0
Texture'ı sil.
virtual void BeginFrame()=0
Yeni frame'e başla.
virtual void ClearScissor()=0
Scissor kırpmasını kaldır.
virtual bool Initialize(SDL_Window *window)=0
Renderer'ı verilen pencere için başlat.
virtual bool SetRenderTarget(RenderTargetHandle handle)
Sonraki çizimlerin gideceği hedefi seç.
Definition renderer.h:232
virtual void UpdateTexture(TextureHandle handle, int32_t x, int32_t y, int32_t width, int32_t height, const uint8_t *data)=0
Var olan bir texture'ın alt bölgesini güncelle (sub-image yükleme).
virtual void SetScissor(int32_t x, int32_t y, int32_t width, int32_t height)=0
Scissor (kırpma) dikdörtgeni ayarla.
virtual RendererBackend GetBackend() const =0
Backend tipini döndür — projeksiyon yönü için kullanılır.
virtual void EndFrame()=0
Frame'i tamamla ve ekrana sun.
virtual TextureHandle CreateTexture(const uint8_t *data, int32_t width, int32_t height, int32_t channels)=0
Ham piksel verisinden texture oluştur. Başarısızlıkta kInvalidTexture döner.
virtual void DestroyRenderTarget(RenderTargetHandle handle)
Hedefi ve ona ait tüm kaynakları serbest bırak.
Definition renderer.h:207
virtual void SetProjectionMatrix(const float *mat4)=0
Ortografik projeksiyon matrisini ayarla (4x4, sütun-major).
virtual void Shutdown()=0
Kaynakları serbest bırak.
virtual void DrawTextured(const std::vector< TexturedVertex > &vertices, TextureHandle texture)=0
Texture'lı vertex'leri çiz. Tint rengi vertex'te taşınır.
virtual void SetBlendMode(BlendMode mode)
Renk karıştırma modunu ayarla.
Definition renderer.h:129
virtual void SetViewport(int32_t x, int32_t y, int32_t width, int32_t height)=0
Viewport'u ayarla (piksel koordinatları).
virtual TextureHandle GetRenderTargetTexture(RenderTargetHandle handle) const
Hedefin içeriğini örneklemek için kullanılacak texture.
Definition renderer.h:218
virtual void SetModelMatrix(const float *mat3)=0
Model dönüşüm matrisini ayarla (3x3, sütun-major — glm::mat3 / glm::value_ptr düzeni).
virtual double GetLastGpuFrameMs() const
Son tamamlanan karenin GPU süresi (milisaniye).
Definition renderer.h:287
virtual void DrawTriangles(const std::vector< Vertex > &vertices)=0
Üçgenler çiz. Vertex listesi 3'ün katı olmalı. Renk vertex'te taşınır.
virtual bool ReadRenderTarget(RenderTargetHandle handle, uint8_t *out_rgba, std::size_t byte_capacity)
Hedefin piksellerini ana belleğe oku.
Definition renderer.h:254
virtual void Clear(const Color &color)=0
Yürürlükteki çizim yüzeyini belirtilen renkle temizle.
virtual RenderTargetHandle CreateRenderTarget(int32_t width, int32_t height, TextureFilter filter)
Çizilebilir bir offscreen hedef oluştur.
Definition renderer.h:198
virtual void SetOpacity(float alpha)=0
Global opaklığı ayarla [0.0, 1.0].
virtual TextureHandle CreateTexture(const uint8_t *data, int32_t width, int32_t height, int32_t channels, TextureFilter filter)
Örnekleme filtresi belirterek texture oluştur.
Definition renderer.h:145
RGBA renk temsili. Her kanal [0, 255] aralığında.
Definition color.h:8
Doku koordinatlı vertex — pozisyon + UV + renk (tint).
Definition vertex.h:21
Temel vertex — pozisyon + renk.
Definition vertex.h:8