SDL 3.4 memperkuat interoperabilitas antara API GPU 3D dan rendering 2D.

  • SDL 3.4 memperkuat interoperabilitas antara API GPU 3D dan rendering 2D, dengan renderer baru, status GPU, dan dukungan untuk YUV dan HDR.
  • Versi ini menambahkan dukungan PNG asli, opsi penskalaan dan perutean tekstur baru, kursor animasi, serta peristiwa input dan jendela tingkat lanjut.
  • Pembaruan ini mencakup peningkatan khusus untuk Windows, macOS, Linux, Emscripten, iOS, dan visionOS, serta dukungan yang diperluas untuk controller, HID, dan atomic KMSDRM.
  • SDL 3.4 ditetapkan sebagai versi SDL3 yang lebih matang, dengan stabilitas yang lebih baik, kinerja yang lebih unggul, dan integrasi yang lebih dalam dengan Steam, Vulkan, dan platform web.

SLD3.4

Jika Anda bekerja di bidang pengembangan video game atau aplikasi multimedia lintas platform, Anda mungkin pernah mendengar tentang SDL. kedatangan de SDL 3.4Pustaka ini mengalami lompatan signifikan dalam hal kemampuan grafis, dukungan platform, dan alat untuk menyempurnakan pengalaman pengguna, di seluruh perangkat desktop, web, dan seluler. Ini bukan pembaruan kecil: ini mencakup semuanya, mulai dari mesin rendering 2D dan API GPU 3D hingga penanganan audio, driver, input pena, sistem Linux modern, dan banyak lagi.

Meskipun SDL 3 terus berkembang, cabang tersebut Versi 3.4 menampilkan dirinya sebagai versi yang sangat solid. Dirancang untuk membantu proyek baru dan yang sedang berjalan memanfaatkan peningkatan kinerja, API baru, dan integrasi yang lebih baik dengan lingkungan seperti Emscripten, Wayland, Vision Pro, atau bahkan PlayStation 2 dalam konteks yang sangat spesifik. Mari kita lihat lebih dekat apa yang baru di SDL 3.4, mengapa ini relevan untuk proyek Anda berikutnya, dan detail teknis apa yang harus Anda perhatikan jika Anda ingin mendapatkan hasil maksimal darinya.

Fitur-fitur baru umum terpenting dari SDL 3.4

Bidang kerja utama SDL 3.4 berfokus pada Meningkatkan interoperabilitas antara 3D dan 2DIni sangat penting untuk mesin game dan aplikasi yang menggabungkan antarmuka 2D dengan konten 3D. Hingga saat ini, menggabungkan kedua lapisan tersebut mungkin memerlukan lebih banyak pekerjaan dari pengembang; versi ini memperkenalkan utilitas dan properti baru yang mempermudah proses ini.

Selain grafis, pembaruan ini juga mencakup... dukungan asli untuk gambar PNGTerdapat peningkatan signifikan pada sistem input (mouse, stylus, gestur, keyboard di layar) dan sejumlah perubahan spesifik untuk Windows, macOS, Linux, Emscripten, iOS, visionOS, dan platform lain yang kurang umum. Integrasi dengan ekosistem Steam dan runtime-nya juga telah disempurnakan, yang sangat penting untuk game Linux dan pengembangan lintas platform yang ditujukan untuk distribusi Steam.

SDL 3
Artikel terkait:
SDL 3: Era Baru Pengembangan Linux dan Game Lintas Platform

Interoperabilitas antara API GPU 3D dan rendering 2D

Salah satu keunggulan SDL 3.4 adalah peningkatan pada integrasi antara 3D dan 2DPustaka ini memperkenalkan fungsi-fungsi baru untuk membuat renderer 2D berbasis GPU dan untuk bertukar informasi antara tekstur GPU dan format piksel yang ditangani oleh SDL.

  • Ia menambahkan SDL_CreateGPURenderer() untuk membuat renderer 2D yang memanfaatkan API GPU yang mendasarinya.
  • dengan SDL_GetGPURendererDevice() Anda dapat mengambil perangkat GPU yang terkait dengan renderer tersebut.
  • Mereka bergabung SDL_CreateGPURenderState(), SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() dan SDL_DestroyGPURenderState() untuk bekerja dengan shader fragmen dalam rendering GPU 2D.
  • Sekarang mereka diterima Tekstur YUV dan ruang warna HDR pada renderer 2D berbasis GPU, yang sangat menarik terutama untuk video dan konten kelas atas.

Selain itu, fitur-fitur yang disertakan juga meliputi: SDL_GetGPUDeviceProperties()Fungsi ini mengembalikan properti perangkat GPU, termasuk nama perangkat, nama dan versi driver, serta informasi lain yang relevan untuk kompatibilitas atau pengambilan keputusan diagnostik. Selain itu, `SDL_GetPixelFormatFromGPUTextureFormat()` dan `SDL_GetGPUTextureFormatFromPixelFormat()` memfasilitasi konversi antara format tekstur GPU dan format piksel SDL.

Secara paralel, properti tersebut termasuk di dalamnya. SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER Untuk membuat tekstur 2D dari tekstur GPU yang sudah ada, dan SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER untuk mendapatkan tekstur GPU yang terkait dengan tekstur 2D saat menggunakan renderer GPU 2D. Pendekatan ini secara signifikan mengurangi hambatan saat mencampur konten yang dihasilkan dalam API GPU dengan pipeline SDL 2D klasik.

Peningkatan pada rendering 2D dan penanganan tekstur.

SDL 3.4 melampaui sekadar interoperabilitas dan menambahkan fungsi spesifik untuk menyempurnakan kualitas dan kontrol rendering 2DSebagai contoh, SDL_RenderTexture9GridTiled() diperkenalkan, yang memungkinkan rendering 9-grid dengan tekstur dalam mode "tiled" alih-alih meregangkannya, sehingga menghindari deformasi pada elemen antarmuka atau frame.

Untuk mengatur bagaimana tekstur diskalakan, berikut ini ditambahkan. SDL_GetDefaultTextureScaleMode() dan SDL_SetDefaultTextureScaleMode(), yang memungkinkan pengaturan mode penskalaan default untuk tekstur baru. Terkait dengan ini adalah SDL_GetRenderTextureAddressMode() dan SDL_SetRenderTextureAddressMode(), bersama dengan konstanta SDL_TEXTURE_ADDRESS_WRAP, yang menyediakan dukungan pembungkus tekstur ketika renderer menunjukkan bahwa ia mendukung wrapping (SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN).

Fitur baru yang sangat menarik untuk game dengan estetika retro adalah... SDL_SCALEMODE_PIXELART, sebuah algoritma penskalaan yang dirancang untuk seni piksel yang menghindari pengaburan klasik dari mode penyaringan lainnya, mempertahankan tepi yang jelas bahkan ketika gambar diperbesar secara signifikan.

Ada juga kemungkinan untuk bekerja dengan palet teksturSDL_SetTexturePalette() dan SDL_GetTexturePalette() memungkinkan Anda untuk menetapkan dan menanyakan palet dalam tekstur, yang berguna jika Anda membuat ulang gaya grafis lama atau ingin mengoptimalkan aliran memori dan bandwidth tertentu.

Dari segi permukaan, SDL 3.4 menggabungkan SDL_RotateSurface() Untuk membuat salinan permukaan yang diputar, SDL_FLIP_HORIZONTAL_AND_VERTICAL ditambahkan untuk membalik permukaan secara bersamaan pada kedua sumbu. Selain itu, properti SDL_PROP_SURFACE_ROTATION_NUMBER (yang kemudian digantikan oleh SDL_PROP_SURFACE_ROTATION_FLOAT dalam perubahan kandidat rilis final) digunakan untuk menentukan sudut yang diperlukan agar gambar kamera ditampilkan dengan benar.

Dukungan PNG asli dan pemuatan permukaan.

Salah satu peningkatan yang paling disambut baik dari segi kepraktisan adalah bahwa SDL 3.4 menyertakan dukungan asli untuk PNG...tanpa bergantung pada pustaka eksternal dalam banyak kasus. Ini sangat menyederhanakan banyak hal. proyek-proyek kecil dan prototipe.

  • SDL_LoadPNG() dan SDL_LoadPNG_IO() memungkinkan pemuatan gambar PNG secara langsung sebagai permukaan.
  • SDL_SavePNG() dan SDL_SavePNG_IO() digunakan untuk menyimpan permukaan dalam format PNG.
  • dengan SDL_LoadSurface() SDL_LoadSurface_IO() secara otomatis mendeteksi apakah file tersebut berformat BMP atau PNG dan memuatnya ke permukaan tanpa Anda perlu khawatir tentang formatnya.

Dukungan terintegrasi ini diterjemahkan menjadi lebih sedikit ketergantungan dan konfigurasi eksternalHal ini sangat berguna terutama saat melakukan kompilasi untuk berbagai platform atau menggunakan SDL dalam lingkungan seperti Emscripten, di mana pengurangan jumlah pustaka pembantu akan berpengaruh pada ukuran dan kompleksitas biner.

Input: mouse, stylus, gerakan, dan keyboard di layar.

SDL 3.4 secara signifikan meningkatkan segala hal yang berkaitan dengan perangkat input canggihDalam ranah mouse, diperkenalkan SDL_SetRelativeMouseTransform(), yang memungkinkan penerapan transformasi khusus pada input mouse relatif, berguna untuk teknik penskalaan, inversi sumbu, atau pemetaan khusus.

Mengenai pensil dan stylus, tampaknya SDL_GetPenDeviceType()yang memungkinkan Anda membedakan apakah pena berinteraksi langsung di layar atau di touchpad terpisah, detail yang sangat berguna untuk menyesuaikan UX sesuai dengan jenis perangkat.

Pada perangkat dengan keyboard virtual, SDL menambahkan event seperti SDL_EVENT_SCREEN_KEYBOARD_SHOWN dan SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, yang melaporkan kapan keyboard di layar ditampilkan atau disembunyikan. Ini memberi Anda keleluasaan untuk menyesuaikan antarmuka, memindahkan elemen, atau mencegah kolom teks tertutup.

Sistem gestur juga diperluas dengan berbagai acara. SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE dan SDL_EVENT_PINCH_ENDyang mendeteksi gerakan mencubit untuk memperbesar dan tindakan serupa. Selain itu, di lingkungan Wayland, dukungan untuk lebih dari lima tombol mouse diperbaiki, dan pengguliran presisi diperkenalkan di X11, meningkatkan kelancaran pengguliran halus.

Terakhir, SDL 3.4 menggabungkan SDL_GetEventDescription(), sebuah fungsi untuk mendapatkan deskripsi peristiwa dalam bahasa Inggris, yang ditujukan untuk pencatatan dan debugging, sesuatu yang sangat berguna ketika Anda melacak perilaku input yang jarang terjadi di berbagai platform.

Audio: alur kerja yang lebih fleksibel dan tanpa pemrosesan ulang sistem.

Subsistem audio juga menerima sejumlah peningkatan, dengan fokus utama pada... Pemrosesan yang efisien dan pengendalian jalur pipa.Sebagai permulaan, SDL_EVENT_AUDIO_DEVICE_ADDED kini juga dikirim selama inisialisasi untuk setiap perangkat audio yang terdeteksi, sehingga memudahkan untuk menemukan dan mendaftarkan perangkat tanpa harus menunggu peristiwa dinamis.

Dua fitur baru, SDL_PutAudioStreamDataNoCopy() dan SDL_PutAudioStreamPlanarData(), memberikan lebih banyak pilihan saat bekerja dengan aliran audio: yang pertama menghindari salinan yang tidak perlu dalam kasus tertentu, dan yang kedua memungkinkan data dimasukkan dalam format planar alih-alih interleaved, ideal untuk aliran tingkat lanjut atau integrasi dengan pustaka pemrosesan audio tingkat tinggi.

Selain itu, petunjuk SDL_HINT_AUDIO_DEVICE_RAW_STREAM menjadi pusat perhatian: petunjuk ini menunjukkan bahwa sistem operasi Anda tidak boleh menerapkan pemrosesan tambahan pada audio tersebut. (seperti peredam kebisingan). Ini penting jika aplikasi atau game Anda sudah menangani pemrosesan dan Anda tidak ingin sistem operasi ikut campur dan mendistorsi hasilnya. Selain itu, diperkenalkan juga SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN, yang memungkinkan aliran data tertentu untuk tetap ada setelah siklus hidup subsistem audio berakhir, sesuatu yang berguna dalam arsitektur yang lebih kompleks.

Pengontrol dan Perangkat HID

SDL 3.4 secara signifikan meningkatkan dukungan untuk pengontrol dan perangkat HID, memperluas jangkauan perangkat keras yang dapat langsung digunakan tanpa konfigurasi eksternal. Secara khusus, ia menambahkan Dukungan yang lebih baik untuk kontroler 8BitDoFlyDigi dan Hand Held Legend SINput, yang memudahkan banyak gamepad pihak ketiga untuk bekerja lebih konsisten.

Itu juga tergabung Dudukan pengontrol Nintendo Switch 2 berkabel Ketika SDL dikompilasi dengan libusb, ini menarik bagi pengguna yang lebih menyukai koneksi langsung daripada mode nirkabel. Pada tingkat API HID, SDL_hid_get_properties() tampaknya mengaitkan properti SDL dengan perangkat HID, dan properti SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER memungkinkan untuk mengambil handle libusb yang terkait dengan SDL_hid_device ketika telah dibuka dengan libusb.

Peningkatan ini merupakan tambahan dari fakta bahwa SDL 3.4 mencakup dukungan untuk Steam Controller baru dalam ekosistem aksesnya, dan itu sangat sesuai dengan perannya dalam runtime Steam dan fokus pada game di Linux dan platform lainnya.

Acara, sistem, dan utilitas umum

Selain aspek grafis dan input, SDL 3.4 memperkenalkan serangkaian perubahan pada sistem event dan utilitas umum yang patut diketahui. Misalnya, SDL_EVENT_WINDOW_EXPOSED Sekarang, kolom data1 akan diisi dengan nilai true ketika dikirim selama perubahan ukuran jendela secara langsung, sehingga memberikan konteks tambahan.

Ia menambahkan SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGEDPeristiwa ini dipicu ketika batas desktop yang dapat digunakan berubah (misalnya, saat memindahkan taskbar atau panel). Peristiwa ini juga menggabungkan SDL_EVENT_SCREEN_KEYBOARD_SHOWN/SDL_EVENT_SCREEN_KEYBOARD_HIDDEN dan peristiwa pinch yang disebutkan sebelumnya, sehingga menyediakan ekosistem peristiwa yang lebih komprehensif untuk skenario UI dinamis.

Dari sisi keuntungan, SDL_HINT_MAIN_CALLBACK_RATE kini dapat diatur sebagai nilai floating-point, sehingga memberikan presisi yang lebih tinggi; SDL_AddAtomicU32() Ini menambahkan dukungan untuk penjumlahan atomik pada bilangan bulat tak bertanda 32-bit; dan SDL_GetSystemPageSize() Mengembalikan ukuran halaman sistem, berguna untuk tugas memori tingkat rendah.

Juga disertakan SDL_ALIGNED()Makro ini menunjukkan bahwa data tertentu harus memiliki perataan khusus, yang sangat relevan untuk optimasi kinerja dan penggunaan instruksi SIMD. Sementara itu, SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER memungkinkan Anda untuk mendefinisikan fungsi pelepasan khusus untuk memori yang digunakan oleh SDL_IOFromMem() dan SDL_IOFromConstMem(), memberi Anda lebih banyak kendali saat mengintegrasikan SDL dengan alokator Anda sendiri.

Peningkatan menarik lainnya adalah dukungan untuk keluaran log terperinci Ketika variabel lingkungan DEBUG_INVOCATION diatur ke "1", dimaksudkan untuk debugging mendalam terhadap inisialisasi dan perilaku pustaka dalam konteks yang kompleks.

Peningkatan spesifik pada Windows

Pada Windows, SDL 3.4 menyertakan perubahan signifikan yang memengaruhi audio, video, dan sistem input. Salah satu poin menariknya adalah fitur petunjuk (hint). SDL_HINT_RENDER_DIRECT3D11_WARPIni memungkinkan Anda untuk mengaktifkan WARP (rasterizer perangkat lunak D3D11). Ini berguna pada mesin tanpa GPU yang kompatibel atau di lingkungan virtualisasi di mana tidak ada akselerasi langsung tetapi Anda tetap ingin menggunakan API.

Driver WASAPI memanfaatkan PERAN_STREAM_PERANGKAT_AUDIO_PETUNJUK_SDL Untuk menyesuaikan kategori aliran audio, integrasi penting untuk perilaku yang konsisten dengan sistem (misalnya, audio game, komunikasi, dll.). Ini juga bergantung pada SDL_HINT_AUDIO_DEVICE_RAW_STREAM untuk menunjukkan apakah driver harus menerapkan pemrosesan tambahan atau tidak.

Petunjuk dimasukkan pada sisi input keyboard. SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYSIni memungkinkan Anda menonaktifkan pintasan sistem tertentu saat menggunakan input mentah, yang sangat praktis untuk game yang perlu menangkap kombinasi tombol tanpa gangguan sistem. Dan pada level API GameInput, SDL_HINT_WINDOWS_GAMEINPUT Fitur ini dinonaktifkan secara default, yang mengurangi potensi konflik di beberapa lingkungan hingga dikonfigurasi secara eksplisit.

Ditambahkan juga SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER Untuk mendapatkan HMONITOR yang terkait dengan layar, sesuatu yang sangat berguna jika Anda menggabungkan SDL dengan kode Win32 klasik dan perlu mengkoordinasikan jendela atau monitor.

macOS, iOS, dan visionOS

Di macOS, SDL 3.4 menyertakan petunjuk yang sangat praktis: SDL_HINT_MAC_TEKAN_DAN_TAHANPengaturan ini mengontrol apakah menekan dan menahan tombol akan mengulangi penekanan tombol atau membuka menu aksen. Ini memungkinkan Anda untuk menyesuaikan perilaku keyboard untuk game dan aplikasi yang membutuhkan pengulangan tombol cepat, bukan menu aksen macOS yang biasa.

Di iOS, SDL sekarang mendukung tampilan jendelaIni menyelesaikan peringatan "CLIENT OF UIKIT REQUIRES UPDATE" dan menyelaraskan pustaka dengan praktik UIKit modern. Properti SDL_PROP_WINDOW_CREATE_WINDOWSCENE_POINTER diperkenalkan untuk menentukan scene jendela saat membuat jendela SDL, membantu mengintegrasikan aplikasi dengan benar ke dalam sistem jendela iOS.

Di visionOS dan perangkat seperti Apple Vision Pro, SDL 3.4 menyesuaikan perilaku jendela dan kecepatan penyegaran. Kecepatan penyegaran default adalah meningkat menjadi 90 HzMemberikan pengalaman yang lebih lancar, dan SDL_SetWindowSize() secara efektif mengubah ukuran jendela pada headset Vision Pro, memberikan kontrol lebih besar atas tata letak di lingkungan realitas campuran.

Linux, Wayland, KMS/DRM dan Vulkan

Di dunia Linux, SDL 3.4 hadir dengan banyak fitur baru. Salah satunya adalah penambahan dukungan atomik untuk KMSDRMHal ini meningkatkan stabilitas dan sinkronisasi dengan bekerja langsung dengan subsistem grafis kernel. Terkait dengan hal ini, petunjuk SDL_HINT_KMSDRM_ATOMIC memungkinkan kontrol atas apakah KMSDRM akan menggunakan fungsi atomik ini atau tidak.

Untuk Wayland, hal-hal berikut ini diterapkan: SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTERFitur ini memungkinkan Anda untuk mendapatkan wl_output yang terkait dengan layar, sehingga mempermudah integrasi yang lebih mendalam dengan compositor. Selain itu, masalah dengan mouse yang memiliki lebih dari lima tombol telah diperbaiki, dan pengguliran presisi di bawah X11 telah ditingkatkan, memberikan kontrol yang jauh lebih baik dalam aplikasi yang sangat bergantung pada pengguliran.

Mengenai Vulkan, SDL 3.4 memperkenalkan rendering batching dan peningkatan lainnya untuk API seperti Vulkan, yang mengurangi panggilan gambar yang berlebihan dan meningkatkan kinerja secara keseluruhan. Pekerjaan juga sedang dilakukan pada logika yang mendeteksi GPU Vulkan yang lebih bertenaga Pada sistem dengan beberapa GPU, fitur ini membantu memilih perangkat yang paling sesuai secara otomatis, terutama pada sistem hybrid atau laptop dengan GPU terintegrasi dan khusus.

Selain itu, properti SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER ditambahkan untuk mengkonfigurasi opsi Vulkan saat membuat perangkat GPU, dan SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN untuk mewajibkan akselerasi perangkat keras saat membuat perangkat tersebut. Pada tingkat sistem yang lebih luas, SDL juga diposisikan sebagai Perangkat X11 dengan diperkenalkannya X11TK sebagai toolkit X11 tersendiri untuk SDL.

Penggunaan Emscripten dan browser

SDL 3.4 secara signifikan meningkatkan integrasinya dengan Emscripten dan eksekusi di peramban webIni sangat penting jika Anda ingin memindahkan game atau aplikasi Anda ke web tanpa harus menulis ulang dari awal. Salah satu fitur barunya memungkinkan jendela SDL untuk "memenuhi dokumen" tanpa harus dalam mode layar penuh.

Pada versi sebelumnya, SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT diperkenalkan, dan pada rilis finalnya diatur ulang di sekitar flag tersebut. DOKUMEN PENGISIAN JENDELA SDL dan fungsi SDL_SetWindowFillDocument(), beserta beberapa properti terkait. Contoh-contoh penting meliputi:

  • SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING dan SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID_STRING, untuk mengatur dan menanyakan ID kanvas yang digunakan oleh SDL.
  • SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN dan SDL_PROP_WINDOW_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN, untuk menunjukkan dan memeriksa apakah jendela harus menempati seluruh dokumen.
  • SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING dan SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING, untuk menentukan dan menanyakan elemen yang dihubungkan dengan input keyboard.

Opsi-opsi ini menawarkan kontrol yang sangat presisi atas Bagaimana SDL terintegrasi dengan DOM dan kanvas?Hal ini membantu menghindari cara-cara yang tidak lazim dan lapisan perantara saat bekerja dengan Emscripten. Mereka juga mempermudah untuk memastikan kompatibilitas SDL dengan kerangka kerja web atau integrasi yang lebih kompleks di mana kanvas hanya merupakan satu bagian dari halaman.

PlayStation 2 dan platform lain yang kurang umum.

Meskipun mungkin mengejutkan, SDL 3.4 juga memperhatikan hal-hal berikut: platform veteran seperti PlayStation 2Menambahkan petunjuk untuk mengontrol parameter tampilan: SDL_HINT_PS2_GS_WIDTH, SDL_HINT_PS2_GS_HEIGHT, SDL_HINT_PS2_GS_PROGRESSIVE dan SDL_HINT_PS2_GS_MODE, yang memungkinkan Anda untuk menyesuaikan resolusi, mode progresif, dan pengaturan umum dari Graphics Synthesizer.

Detail-detail ini memperjelas bahwa SDL tetap menjadi pilihan yang sangat fleksibel untuk proyek homebrew, emulasi, atau penelitian di platform yang lebih lama, terlepas dari fokus kuatnya pada PC modern, perangkat seluler, dan web.

Manajemen proses, izin kamera, dan metadata ELF

Pada tingkat sistem, SDL 3.4 menambahkan properti tersebut. SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRINGIni digunakan untuk mengkonfigurasi direktori kerja proses baru yang dibuat dari SDL. Ini menyederhanakan menjalankan subproses atau alat eksternal dari aplikasi SDL Anda tanpa harus mengakses API sistem operasi.

Di bidang fotografi, SDL_GetCameraPermissionState() sekarang mengembalikan nilai dengan tipe Status_IzinKameraSDL alih-alih bilangan bulat generik, hal ini menyelaraskan semantik dengan lebih baik dan mempermudah pengelolaan izin pada platform seluler dan desktop.

Dalam sistem Unix, SDL menyertakan catatan ELF yang menjelaskan isinya. fasilitas perpustakaan yang tidak wajib Mengikuti format yang didokumentasikan di systemd.io/ELF_DLOPEN_METADATA, idenya adalah agar distribusi dapat menganalisis catatan ini dan secara otomatis menghasilkan dependensi pengemasan menggunakan alat seperti package-notes. SDL menyediakan makro SDL_ELF_NOTE_DLOPEN sehingga pustaka dan gim lain dapat melakukan hal yang sama, memfasilitasi manajemen dependensi yang jauh lebih bersih.

Kemajuan jendela dan kursor animasi

Untuk meningkatkan pengalaman pengguna, SDL 3.4 menambahkan fitur yang dirancang untuk menampilkan kemajuan dan memperkaya antarmukaSebagai contoh, SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState(), dan SDL_GetWindowProgressValue() diperkenalkan untuk menampilkan bilah kemajuan pada ikon jendela di taskbar Windows dan Linux.

Fitur ini memungkinkan pengguna untuk melihat kondisi operasi yang panjang (unduhan, unggahan, pembuatan internal, dll.) bahkan jika jendela tidak berada di latar depan. Ini adalah cara yang cukup elegan untuk memberikan umpan balik tanpa harus mendesain HUD tambahan.

Di sisi lain, SDL_CreateAnimatedCursor() memungkinkan Buat kursor warna animasiIni menambahkan sentuhan polesan visual pada game atau alat di mana kursor mengkomunikasikan status (memuat, kemungkinan tindakan, peringatan, dll.). Dikombinasikan dengan petunjuk baru SDL_HINT_MOUSE_DPI_SCALE_CURSORS, yang sekarang secara default bernilai "0" untuk mencegah kursor berubah ukuran secara tidak terduga di lingkungan yang diskalakan DPI, ini memberikan kontrol yang lebih dapat diprediksi atas tampilan penunjuk.

Dengan serangkaian perubahan ini—mulai dari integrasi GPU 3D/2D, dukungan PNG asli, peningkatan input dan audio, hingga perhatian pada Linux modern, Emscripten, visionOS, dan konsol klasik—SDL 3.4 memperkuat posisinya sebagai seperangkat alat yang sangat lengkap untuk pengembangan lintas platform.Meminimalkan ketergantungan eksternal dan menawarkan fondasi yang kokoh untuk melakukan iterasi tanpa menghabiskan sepanjang hari untuk memperbaiki masalah yang tidak terkait dengan kode Anda sendiri.