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

Ekran yerine çizilebilen offscreen bir yüzey (dokuya çizim). Ayrıntılar...

#include <render_target.h>

Public Üye Fonksiyonlar

 RenderTarget ()=default
 Geçersiz (boş) hedef.
bool IsValid () const noexcept
 Hedef başarıyla oluşturuldu mu?
int32_t Width () const noexcept
 Genişlik (piksel).
int32_t Height () const noexcept
 Yükseklik (piksel).
RenderTargetHandle Handle () const noexcept
 Backend tanımlayıcısı — ileri düzey kullanım için.
void Reset () noexcept
 Hedefi kaynaklarıyla birlikte serbest bırak.

Ayrıntılı tanımlama

Ekran yerine çizilebilen offscreen bir yüzey (dokuya çizim).

QPainter'da QImage'e çizmenin karşılığı. Tipik akış: sahneyi hedefe çiz, sonra hedefi tek bir görüntü gibi ekrana bas. Mini harita, son işlem efektleri (bulanıklık, renk süzgeci), iz/hayalet efekti ve pahalı ama nadir değişen katmanların önbelleklenmesi bu yolla yapılır.

Nesne Painter::CreateRenderTarget ile üretilir; doğrudan kurulamaz.

auto target = painter.CreateRenderTarget(256, 256);
painter.SetRenderTarget(target); // artık çizimler hedefe gider
painter.Clear(sdl_painter::Color::Transparent());
painter.FillCircle(128.0F, 128.0F, 100.0F);
painter.ResetRenderTarget(); // ekrana dön
painter.DrawRenderTarget(target, sdl_painter::Rect{10, 10, 128, 128});
2B dikdörtgen — sol üst köşe + genişlik/yükseklik.
Definition geometry.h:34
Koordinatlar
Hedef bağlıyken çizim koordinatları hedefe yereldir: (0, 0) hedefin sol üst köşesidir ve projeksiyon hedefin boyutuna göre kurulur. İki backend'de de aynı: OpenGL'in aşağıdan yukarı framebuffer'ı ile Vulkan'ın yukarıdan aşağı olanı arasındaki fark kütüphane içinde kapatılır, sonuç piksel piksel aynıdır.
Piksel formatı
Hedefler daima doğrusal RGBA8 tutar — ekran yüzeyinin formatı ne olursa olsun. Painter::ReadRenderTarget bu yüzden her platformda aynı baytları döndürür.
Başlangıç içeriği
Yeni bir hedef (0, 0, 0, 0) olarak ilklenir ve bu iki backend'de de aynıdır. Ekranın veya başka bir hedefin temizleme rengi buraya sızmaz; hedefe geçmeden önce Painter::Clear çağırmak zorunlu değildir.
Not
Painter'dan sonra yıkılan bir RenderTarget güvenlidir: Painter'ın yıkıldığını bilir ve renderer'a dokunmaz (kaynakları renderer ile birlikte bırakılmıştır). Image ve Font'ta bu koruma yoktur; onlar Painter yaşarken yıkılmalıdır.
Uyarı
Bir hedefe çizerken o hedefin kendi içeriğini örneklemek tanımsızdır. Önce Painter::ResetRenderTarget çağırın.

Üye Fonksiyon Dokümantasyonu

◆ Reset()

void sdl_painter::RenderTarget::Reset ( )
noexcept

Hedefi kaynaklarıyla birlikte serbest bırak.

Yıkıcı da bunu çağırır; erken serbest bırakmak isteyen kod için ayrıca açıktır. İkinci çağrı etkisizdir. Frame içinde de çağrılabilir: hedefi kullanan bekleyen çizimler önce gönderilir, GPU kaynakları o çizimler tamamlanınca serbest bırakılır.


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