SDLPainter 1.2.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
Yüklüyor...
Arıyor...
Eşleşme Yok
sdl_painter::IRenderer Sınıf Referansabstract

Backend-agnostik soyut renderer arayüzü. Ayrıntılar...

#include <renderer.h>

Public Üye Fonksiyonlar

virtual bool Initialize (SDL_Window *window)=0
 Renderer'ı verilen pencere için başlat.
virtual void Shutdown ()=0
 Kaynakları serbest bırak.
virtual void BeginFrame ()=0
 Yeni frame'e başla.
virtual void EndFrame ()=0
 Frame'i tamamla ve ekrana sun.
virtual void SetViewport (int32_t x, int32_t y, int32_t width, int32_t height)=0
 Viewport'u ayarla (piksel koordinatları).
virtual void SetScissor (int32_t x, int32_t y, int32_t width, int32_t height)=0
 Scissor (kırpma) dikdörtgeni ayarla.
virtual void ClearScissor ()=0
 Scissor kırpmasını kaldır.
virtual void Clear (const Color &color)=0
 Ekranı belirtilen renkle temizle.
virtual void SetOpacity (float alpha)=0
 Global opaklığı ayarla [0.0, 1.0].
virtual void SetBlendMode (BlendMode mode)
 Renk karıştırma modunu ayarla.
virtual void DrawTriangles (const std::vector< Vertex > &vertices)=0
 Üçgenler çiz. Vertex listesi 3'ün katı olmalı. Renk vertex'te taşınır.
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 TextureHandle CreateTexture (const uint8_t *data, int32_t width, int32_t height, int32_t channels, TextureFilter filter)
 Örnekleme filtresi belirterek texture oluştur.
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 DestroyTexture (TextureHandle handle)=0
 Texture'ı sil.
virtual void DrawTextured (const std::vector< TexturedVertex > &vertices, TextureHandle texture)=0
 Texture'lı vertex'leri çiz. Tint rengi vertex'te taşınır.
virtual RendererBackend GetBackend () const =0
 Backend tipini döndür — projeksiyon yönü için kullanılır.
virtual void SetProjectionMatrix (const float *mat4)=0
 Ortografik projeksiyon matrisini ayarla (4x4, sütun-major).
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).

Ayrıntılı tanımlama

Backend-agnostik soyut renderer arayüzü.

OpenGL ve Vulkan implementasyonları bu arayüzü uygular. Painter, IRenderer üzerinden çalışır — backend detaylarını bilmez.

Üye Fonksiyon Dokümantasyonu

◆ CreateTexture()

virtual TextureHandle sdl_painter::IRenderer::CreateTexture ( const uint8_t * data,
int32_t width,
int32_t height,
int32_t channels,
TextureFilter filter )
inlinevirtual

Örnekleme filtresi belirterek texture oluştur.

Saf sanal değildir: varsayılan gövde filtreyi yok sayıp yukarıdaki aşırı yüklemeye düşer. Böylece bu arayüzü dışarıda implemente etmiş kod, filtre desteği gelmeden önce yazılmış olsa bile derlenmeye devam eder ve doğrusal filtreyle çalışır. Aynı yaklaşım GetLastGpuFrameMs için de kullanılıyor.

◆ GetLastGpuFrameMs()

virtual double sdl_painter::IRenderer::GetLastGpuFrameMs ( ) const
inlinenodiscardvirtual

Son tamamlanan karenin GPU süresi (milisaniye).

Saf sanal değildir: ölçüm desteklemeyen backend'ler ve tüketici tarafındaki basit implementasyonlar bunu görmezden gelebilir. Varsayılan 0.0 = "ölçülmüyor".

Sonuç bir kare gecikmeli olabilir; implementasyon, sorgu sonucunu beklemek yerine hazır olan en son değeri döndürmelidir (bekleme, ölçtüğü şeyi bozan bir CPU–GPU senkronizasyonu yaratır).

◆ SetBlendMode()

virtual void sdl_painter::IRenderer::SetBlendMode ( BlendMode mode)
inlinevirtual

Renk karıştırma modunu ayarla.

Saf sanal değildir: varsayılan gövde çağrıyı yok sayar, yani bu arayüzü dışarıda implemente etmiş kod derlenmeye devam eder ve standart alfa karıştırmayla çalışır. Aynı yaklaşım GetLastGpuFrameMs ve filtreli CreateTexture için de kullanılıyor.

◆ SetModelMatrix()

virtual void sdl_painter::IRenderer::SetModelMatrix ( const float * mat3)
pure virtual

Model dönüşüm matrisini ayarla (3x3, sütun-major — glm::mat3 / glm::value_ptr düzeni).

Not
Painter bu matrisi kare başına bir kez ve daima birim olarak yazar: transform CPU'da vertex'lere gömülüyor (bkz. examples/benchmarks/README.md). Arayüzde kalmasının sebebi, kendi backend'ini yazanların matris yolunu hâlâ kullanabilmesi ve mevcut shader'ların değişmemesidir.

◆ UpdateTexture()

virtual void sdl_painter::IRenderer::UpdateTexture ( TextureHandle handle,
int32_t x,
int32_t y,
int32_t width,
int32_t height,
const uint8_t * data )
pure virtual

Var olan bir texture'ın alt bölgesini güncelle (sub-image yükleme).

Glyph atlası gibi artımlı doldurulan texture'lar için gereklidir: her yeni glyph'te tüm sayfayı yeniden yaratmak yerine yalnızca ilgili dikdörtgen yüklenir.

Parametreler
handleGüncellenecek texture (CreateTexture ile üretilmiş).
xHedef bölgenin sol kenarı (piksel).
yHedef bölgenin üst kenarı (piksel).
widthBölge genişliği (piksel, > 0).
heightBölge yüksekliği (piksel, > 0).
dataSıkı paketlenmiş RGBA8 piksel verisi (width * height * 4 bayt).
Uyarı
Kare ortasında çağrılabilir; ancak o kare içinde daha önce çizim komutu verilmiş bir bölgenin üzerine yazmak tanımsızdır. Yalnızca henüz kullanılmamış bölgeleri doldurun (glyph atlası bunu şerf paketlemesiyle garanti eder).

Bu sınıf için dokümantasyon aşağıdaki dosyadan üretilmiştir: