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

SDL pencere/olay-döngüsü boilerplate'ini soyutlayan uygulama çatısı. Ayrıntılar...

#include <application.h>

Public Üye Fonksiyonlar

 Application (AppConfig config={})
 Verilen yapılandırma ile uygulamayı oluştur (init Run içinde).
virtual ~Application ()
 Painter → pencere → SDL_Quit sırasıyla kaynakları serbest bırakır.
int Run ()
 Uygulamayı başlat ve olay döngüsünü çalıştır.
void Quit () noexcept
 Olay döngüsünden çıkışı iste (bir sonraki iterasyonda durur).
int32_t Width () const noexcept
 Güncel çizim yüzeyi genişliği (framebuffer piksel).
int32_t Height () const noexcept
 Güncel çizim yüzeyi yüksekliği (framebuffer piksel).
void SetTitle (const std::string &title)
 Pencere başlığını güncelle.
SDL_Window * GetWindow () const noexcept
 Alttaki SDL penceresi — belgelenmiş kaçış kapısı (ileri kullanım).
double Fps () const noexcept
 Yumuşatılmış kare hızı (kare/saniye).
const FrameStatsGetFrameStats () const noexcept
 Son tamamlanan karenin çizim istatistikleri.
void SetStatsOverlay (StatsOverlayMode mode) noexcept
 Ekran üstü gösterge modunu değiştir.
StatsOverlayMode GetStatsOverlay () const noexcept
 Güncel gösterge modu.

Korumalı Üye Fonksiyonlar

PainterGetPainter ()
 Aktif Painter — yalnızca Run çalışırken (OnInit dahil) geçerli.
virtual bool OnInit ()
 Döngü başlamadan bir kez çağrılır (kaynak yükleme vb.).
virtual void OnUpdate (float dt)
 Her frame'de güncelleme — dt saniye cinsinden delta zaman.
virtual void OnRender (Painter &painter)
 Her frame'de çizim.
virtual void OnRender (Painter &painter, float alpha)
 İnterpolasyonlu çizim — alpha son sabit adımdan bu yana biriken artık zamanın oranı [0,1].
virtual void OnKeyDown (const KeyEvent &event)
 Tuşa basıldı.
virtual void OnKeyUp (const KeyEvent &event)
 Tuş bırakıldı.
virtual void OnMouseButtonDown (const MouseButtonEvent &event)
 Fare düğmesine basıldı.
virtual void OnMouseButtonUp (const MouseButtonEvent &event)
 Fare düğmesi bırakıldı.
virtual void OnMouseMove (const MouseMoveEvent &event)
 Fare hareket etti.
virtual void OnMouseWheel (const MouseWheelEvent &event)
 Fare tekerleği döndü.
virtual void OnResize (const ResizeEvent &event)
 Pencere yeniden boyutlandı.
virtual bool OnRawEvent (const SDL_Event &event)
 Ham SDL olayı — kaçış kapısı.
virtual void OnShutdown ()
 Döngü bittikten sonra bir kez çağrılır (temizlik).

Ayrıntılı tanımlama

SDL pencere/olay-döngüsü boilerplate'ini soyutlayan uygulama çatısı.

Kullanıcı bu sınıftan türeyip korumalı sanal metotları override eder; SDL init, pencere oluşturma, GL context, olay döngüsü, zamanlama ve yıkım tamamen çatı tarafından yönetilir.

class MyApp : public sdl_painter::Application {
public:
protected:
void OnRender(sdl_painter::Painter& p) override {
p.Clear({30, 30, 30, 255});
p.DrawCircle(400, 300, 80);
}
void OnKeyDown(const sdl_painter::KeyEvent& e) override {
if (e.key == sdl_painter::Key::kEscape) Quit();
}
};
int main() {
sdl_painter::AppConfig cfg;
cfg.title = "Demo";
MyApp app(cfg);
return app.Run();
}
SDL pencere/olay-döngüsü boilerplate'ini soyutlayan uygulama çatısı.
Definition application.h:54
virtual void OnKeyDown(const KeyEvent &event)
Tuşa basıldı.
Definition application.h:141
Application(AppConfig config={})
Verilen yapılandırma ile uygulamayı oluştur (init Run içinde).
virtual void OnRender(Painter &painter)
Her frame'de çizim.
Definition application.h:123
void Quit() noexcept
Olay döngüsünden çıkışı iste (bir sonraki iterasyonda durur).
Ana çizim sınıfı
Definition painter.h:58
void DrawCircle(float cx, float cy, float radius)
Daire çerçeve çiz.
void Clear(const Color &color)
Ekranı belirtilen renkle temizle.
std::string title
Pencere başlığı.
Definition app_config.h:45
Klavye olayı.
Definition events.h:134
Uyarı
Yaşam döngüsü: Türeyen sınıfın Image / Font üyeleri, temel sınıf yıkıcısı çalışmadan önce (yani içteki Painter yıkılmadan önce) yok edilir. Bu sıralama kasıtlıdır ve Painter yaşam sözleşmesini otomatik olarak sağlar — kaynakları düz üye olarak tutmak güvenlidir.

Üye Fonksiyon Dokümantasyonu

◆ Fps()

double sdl_painter::Application::Fps ( ) const
nodiscardnoexcept

Yumuşatılmış kare hızı (kare/saniye).

Çeyrek saniyelik pencerede ortalanır; ham 1/dt değerinden çok daha okunabilirdir. AppConfig::stats_overlay kapalı olsa da hesaplanır.

◆ OnInit()

virtual bool sdl_painter::Application::OnInit ( )
inlineprotectedvirtual

Döngü başlamadan bir kez çağrılır (kaynak yükleme vb.).

Döndürdüğü değer
false dönerse Run 1 ile çıkar.

◆ OnRawEvent()

virtual bool sdl_painter::Application::OnRawEvent ( const SDL_Event & event)
inlineprotectedvirtual

Ham SDL olayı — kaçış kapısı.

Döndürdüğü değer
true dönerse olay tüketilmiş sayılır; çeviri ve varsayılan (quit dahil) işleme atlanır. Kullanan .cpp <SDL3/SDL.h> dahil etmelidir (SDL3, sdl_painter'a PUBLIC bağlıdır).

◆ OnRender() [1/2]

virtual void sdl_painter::Application::OnRender ( Painter & painter)
inlineprotectedvirtual

Her frame'de çizim.

Not
En az bir OnRender override edilmelidir. Basit uygulamalar bu tek-argümanlı sürümü override eder.

◆ OnRender() [2/2]

virtual void sdl_painter::Application::OnRender ( Painter & painter,
float alpha )
inlineprotectedvirtual

İnterpolasyonlu çizim — alpha son sabit adımdan bu yana biriken artık zamanın oranı [0,1].

Not
Döngü her zaman bu sürümü çağırır. Varsayılanı alpha'yı yoksayarak tek-argümanlı OnRender'a delege eder — böylece mevcut kod değişmeden çalışır. TimingMode::kVariable modunda alpha daima 1.0'dır. Oyunvari uygulamalar bu sürümü override edip önceki/geçerli state arasında interpolasyon yapabilir.
Uyarı
Yalnızca bu sürümü override eden türeyen sınıflar, -Woverloaded- virtual etkinken tek-argümanlı sürümü gizlediğine dair uyarı alabilir; gerekirse using Application::OnRender; ekleyin.

◆ OnUpdate()

virtual void sdl_painter::Application::OnUpdate ( float dt)
inlineprotectedvirtual

Her frame'de güncelleme — dt saniye cinsinden delta zaman.

Not
TimingMode::kFixed modunda sabit adımla (1/fixed_update_hz) frame başına 0..N kez çağrılır; kVariable'da her frame bir kez.

◆ Run()

int sdl_painter::Application::Run ( )

Uygulamayı başlat ve olay döngüsünü çalıştır.

Döndürdüğü değer
Başarıda 0; init veya OnInit hatasında 1.

◆ Width()

int32_t sdl_painter::Application::Width ( ) const
inlinenodiscardnoexcept

Güncel çizim yüzeyi genişliği (framebuffer piksel).

Not
AppConfig::high_dpi açıkken bu değer, mantıksal pencere genişliğinden ekran ölçek faktörü kadar büyüktür.

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