SDL pencere/olay-döngüsü boilerplate'ini soyutlayan uygulama çatısı.
Ayrıntılar...
#include <application.h>
|
|
| 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 pencere genişliği (piksel).
|
|
int32_t | Height () const noexcept |
| | Güncel pencere yüksekliği (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).
|
|
|
Painter & | GetPainter () |
| | 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).
|
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.
public:
protected:
p.
Clear({30, 30, 30, 255});
}
if (e.key == sdl_painter::Key::kEscape)
Quit();
}
};
int main() {
sdl_painter::AppConfig cfg;
MyApp app(cfg);
return app.Run();
}
SDL pencere/olay-döngüsü boilerplate'ini soyutlayan uygulama çatısı.
Definition application.h:49
virtual void OnKeyDown(const KeyEvent &event)
Tuşa basıldı.
Definition application.h:115
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:97
void Quit() noexcept
Olay döngüsünden çıkışı iste (bir sonraki iterasyonda durur).
Ana çizim sınıfı — QPainter'a benzer API.
Definition painter.h:51
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:34
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.
◆ 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.
Bu sınıf için dokümantasyon aşağıdaki dosyadan üretilmiştir: