[ARAÇ] Merhaba SDL3

Evet sevgili yazılımperver dostlarım, maceramıza başlıyoruz. Kodlarımız için daha önce sizler ile paylaşmış olduğum, cpp şablon reposunu kullanıyor olacağız ve bunları şimdilik cpp-playground reposu içerisinde saklayacağız.

Peki ilk konumuz ne? Görselleştirme, girdi/çıktı ve diğer platform bağımlı işler için kullanacağımız kütüphane olacak, yani SDL3. Daha önce SDL2’ye yönelik bir çok yazım vardı zaten, ilaveten uEngine4 de aslında SDL2 tabanlı. Bununla birlikte, SDL3’ün çıkması ile artık SDL3’ü kullanmaya başlamakta fayda var diye düşündüm ve yeni yazılarımda SDL3’ü kullanmaya karar verdim.

Örnek bir uygulamayı sizler ile paylaşmadan önce (önümüzdeki yazıda inşallah) SDL bizlere ne sağlıyor ve SDL3 ile SDL2 arasında farklara değinmek istiyorum. Ayrıca bu seçime yönelik de elbette bir Mimari Karar Kaydı dolduruyor olacağız 🙂

SDL’in öne çıkan temel özellikler şu şekilde özetlenebilir:

  • Çoklu platform desteği: Windows, Linux, iOS ve Android’i aynı anda destekleyen nadir C++ tabanlı kütüphanelerden birisidir. Bir diğer ifade ile hem masaüstü, hem mobil hatta konsollara da destek sunmakta,
  • 2B Görselleştirme için hazır ve GPU hızlandırmayı da kullanan API’ler sunmakta,
  • Ses ve müzik çalmak için gerekli kabiliyetleri içerisinde barındırıyor,
  • Girdi/çıktı bağımsızlığı sunması ve bir çok cihazı desteklemesi (klavye, fare, oyun kontrolcüler),
  • Pencere yönetimi, görsel uygulama geliştiren bir çok kişinin muzdarip olabildiği, pencere yönetimi ve benzer hususları da soyutlaması,
  • Font görselleştirme kabiliyeti sunması,
  • Resim görselleştirme kabiliyeti sunması,
  • Topluluk ve kaynak anlamında oldukça geniş içeriğin bulunması.

Elbette SDL’in kendi sayfasında ya da internette bunlara ilave birçok husus görebilirsiniz ama bana göre yukarıdakiler.

Peki SDL3, SDL2’ye göre neler sunuyor bize. Öncelikle, kendi sayfalarında oldukça detaylı bir liste mevcut https://wiki.libsdl.org/SDL3/NewFeatures. Peki en önemli farklılıklar nedir diye soracak olursanız:

  • Daha temiz ve tutarlı bir API,
  • Güçlendirilmiş dokümantasyon,
  • Daha fazla platform ve backend desteği,
  • İyileştirilmiş CMake desteği (find_package desteği vs),
  • Geliştirici dostu veri yapıları.

Burada aklınıza şu sorular gelebilir, hemen soralım ve cevaplayalım:

  • SDL3, SDL2’ye geriye dönük uyumluluk sunuyor mu? Birebir uyumlu mu?
    • Hayır değil, bazı API’lerde ve kullanımlarda değişiklikler var, kod “migration guide” a bakılmasında fayda var,
  • Yeni bir projeye geçeceksem hangisini tercih etmeliyim?
    • Tabi ki SDL3,
  • Mobil bir proje için hangisini tercih etmeliyim?
    • SDL3
  • İlla SDL3′ geçmeli miyim?
    • Hayır, halen bir çok uygulama SDL2 kullanıyor, bununla birlikte planlara dahil etmekte fayda var,
  • SDL C++’da mı yazıldı
    • Hayır, C’de yazıldı ama C++ geliştiriciler düşünülerek yapılan güzellikler mevcut.

Şimdi dilerseniz, SDL2 ile SDL3 arasında kod farklılıklarına göz atalım.

Bu arada SDL3’e yönelik hazırladığım, Mimari Karar Kaydı’na (ADR) buradan ulaşabilirsiniz.

Bir sonraki yazımda, SDL3’e çalışan bir örnek üzerinden giriyor olacağız. O zamana kadar kendinize iyi bakın.

Kaynaklar

 

 

 

 

 

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.