
Jei dirbate vaizdo žaidimų kūrimo ar kelių platformų multimedijos programų srityje, tikriausiai esate girdėję apie SDL. Atvykimas de SDL 3.4Biblioteka žengia reikšmingą žingsnį į priekį grafinių galimybių, platformos palaikymo ir įrankių, skirtų vartotojo patirčiai gerinti darbalaukiuose, žiniatinklyje ir mobiliuosiuose įrenginiuose, atžvilgiu. Tai nemenkas atnaujinimas: ji apima viską – nuo 2D atvaizdavimo variklio ir 3D GPU API iki garso apdorojimo, tvarkyklių, rašiklio įvesties, modernių „Linux“ sistemų ir dar daugiau.
Nors SDL 3 toliau vystosi, šaka 3.4 versija yra labai tvirta Sukurta siekiant padėti naujiems ir vykdomiems projektams pasinaudoti našumo patobulinimais, naujomis API ir geresne integracija su tokiomis aplinkomis kaip „Emscripten“, „Wayland“, „Vision Pro“ ar net „PlayStation 2“ labai specifiniuose kontekstuose. Atidžiau panagrinėkime, kas naujo SDL 3.4 versijoje, kodėl tai aktualu jūsų kitam projektui ir kokias technines detales turėtumėte turėti omenyje, jei norite išnaudoti visas jos galimybes.
Svarbiausios bendrosios SDL 3.4 funkcijos
Pagrindinė SDL 3.4 darbo kryptis yra Pagerinti 3D ir 2D sąveikąTai labai svarbu žaidimų varikliams ir programoms, kurios derina 2D sąsajas su 3D turiniu. Iki šiol abiejų sluoksnių sujungimas galėjo pareikalauti daugiau kūrėjo darbo; šioje versijoje pristatomos naujos priemonės ir savybės, kurios palengvina šį procesą.
Be grafikos, atnaujinime yra ir vietinis PNG vaizdų palaikymasPastebimai patobulinta įvesties sistema (pelė, rašiklis, gestai, ekrano klaviatūra) ir atlikta daugybė specifinių pakeitimų, skirtų „Windows“, „macOS“, „Linux“, „Emscripten“, „iOS“, „visionOS“ ir kitoms rečiau naudojamoms platformoms. Taip pat patobulinta integracija su „Steam“ ekosistema ir jos vykdymo aplinka, o tai labai svarbu kuriant „Linux“ žaidimus ir kuriant įvairias platformas, skirtas „Steam“ platinimui.
3D GPU API ir 2D vaizdavimo sąveika
Vienas iš SDL 3.4 privalumų yra pagreitinimas 3D ir 2D integracijaBibliotekoje pristatomos naujos funkcijos, skirtos kurti GPU pagrindu veikiančius 2D renderius ir keistis informacija tarp GPU tekstūrų ir SDL apdorojamų pikselių formatų.
- Tai priduria SDL_CreateGPURenderer() sukurti 2D atvaizdavimo įrankį, kuris naudoja pagrindinę GPU API.
- su SDL_GetGPURendererDevice() Galite gauti su tuo atvaizdavimo įrankiu susietą GPU įrenginį.
- Jie prisijungia SDL_CreateGPURenderState(), SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() ir SDL_DestroyGPURenderState(), kad veiktų su fragmentų šešėliavimo funkcijomis 2D GPU vaizdavime.
- Dabar jie yra priimti YUV tekstūros ir HDR spalvų erdvės GPU pagrindu veikiančiame 2D renderyje, kuris ypač įdomus aukštos klasės vaizdo įrašams ir turiniui.
Taip pat apima tokias funkcijas kaip SDL_GetGPUDeviceProperties()Grąžina GPU įrenginio ypatybes, įskaitant įrenginio pavadinimą, tvarkyklės pavadinimą ir versiją bei kitą informaciją, svarbią suderinamumui ar diagnostikos sprendimams. Be to, `SDL_GetPixelFormatFromGPUTextureFormat()` ir `SDL_GetGPUTextureFormatFromPixelFormat()` palengvina konvertavimą tarp GPU tekstūrų formatų ir SDL pikselių formatų.
Lygiagrečiai, turtas yra įtrauktas SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER Sukurti 2D tekstūrą iš esamos GPU tekstūros ir SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER gauti su 2D tekstūra susietą GPU tekstūrą naudojant 2D GPU vaizdavimo įrankį. Šis metodas žymiai sumažina trintį maišant GPU API sugeneruotą turinį su klasikiniu SDL 2D srautu.
2D vaizdavimo ir tekstūrų tvarkymo patobulinimai
SDL 3.4 neapsiriboja vien sąveikumu ir prideda specifinių funkcijų, skirtų tiksliai suderinti 2D vaizdavimo kokybę ir valdymąPavyzdžiui, pristatoma funkcija SDL_RenderTexture9GridTiled(), kuri leidžia 9 tinklelių perteikimą su tekstūromis „plytelėmis“ vietoj jų tempimo, taip išvengiant sąsajos elementų ar rėmelių deformacijų.
Norint valdyti tekstūrų mastelį, pridedami šie elementai: SDL_GetDefaultTextureScaleMode() ir SDL_SetDefaultTextureScaleMode(), kuri leidžia nustatyti numatytąjį mastelio keitimo režimą naujoms tekstūroms. Su tuo susiję SDL_GetRenderTextureAddressMode() ir SDL_SetRenderTextureAddressMode(), kartu su konstanta SDL_TEXTURE_ADDRESS_WRAP, kuri suteikia tekstūros apvyniojimo palaikymas kai atvaizdavimo programa nurodo, kad palaiko teksto apvyniojimą (SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN).
Labai įdomi nauja funkcija žaidimams su retro estetika yra SDL_SCALEMODE_PIXELART, pikselių menui sukurtas mastelio keitimo algoritmas, kuris vengia klasikinio kitų filtravimo režimų suliejimo, išsaugodamas apibrėžtus kraštus net ir labai padidinus vaizdą.
Taip pat yra galimybė dirbti su tekstūrų paletėsSDL_SetTexturePalette() ir SDL_GetTexturePalette() leidžia priskirti ir užklausti paletes tekstūrose, o tai naudinga, jei atkuriate senus grafinius stilius arba norite optimizuoti tam tikrus atminties ir pralaidumo srautus.
Kalbant apie paviršius, SDL 3.4 apima SDL_RotateSurface() Norint sukurti pasuktas paviršiaus kopijas, pridedama SDL_FLIP_HORIZONTAL_AND_VERTICAL, kad paviršiai būtų apversti vienu metu abiejose ašyse. Be to, SDL_PROP_SURFACE_ROTATION_NUMBER savybė (vėliau galutiniuose kandidatų versijos pakeitimuose pakeista SDL_PROP_SURFACE_ROTATION_FLOAT) naudojama norint nurodyti kampą, reikalingą teisingam kameros vaizdų rodymui.
Gimtoji PNG palaikymas ir paviršiaus įkėlimas
Vienas iš labiausiai sveikintinų praktinių patobulinimų yra tai, kad SDL 3.4 apima vietinis PNG palaikymas...daugeliu atvejų nesiremiant išorinėmis bibliotekomis. Tai daug ką supaprastina nedideli projektai ir prototipai.
- SDL_LoadPNG() ir SDL_LoadPNG_IO() leidžia įkelti PNG vaizdus tiesiai kaip paviršius.
- SDL_SavePNG() ir SDL_SavePNG_IO() naudojami paviršiams išsaugoti PNG formatu.
- su SDL_LoadSurface() SDL_LoadSurface_IO() automatiškai aptinka, ar failas yra BMP, ar PNG formato, ir įkelia jį į paviršių, jums nereikės rūpintis formatu.
Ši integruota parama reiškia mažiau priklausomybių ir išorinių konfigūracijųTai ypač naudinga kompiliuojant kelioms platformoms arba naudojant SDL tokiose aplinkose kaip „Emscripten“, kur pagalbinių bibliotekų skaičiaus sumažinimas turi įtakos tiek dvejetainių failų dydžiui, tiek sudėtingumui.
Įvestis: pelė, rašiklis, gestai ir ekraninė klaviatūra
SDL 3.4 žymiai patobulina viską, kas susiję su pažangių įvesties įrenginiųPelės srityje įdiegta SDL_SetRelativeMouseTransform(), kuri leidžia pritaikyti pasirinktinę transformaciją santykinei pelės įvesties informacijai, naudingai mastelio keitimo metodams, ašių inversijai arba specialiems atvaizdavimams.
Kalbant apie pieštukus ir rašiklius, atrodo, SDL_GetPenDeviceType()Tai leidžia atskirti, ar rašiklis veikia tiesiogiai ekrane, ar atskiroje jutiklinėje planšetėje – labai naudinga detalė pritaikant vartotojo patirtį pagal įrenginio tipą.
Įrenginiuose su virtualia klaviatūra SDL prideda tokius įvykius kaip SDL_EVENT_SCREEN_KEYBOARD_SHOWN ir SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, kurie praneša, kada rodoma arba paslėpta ekraninė klaviatūra. Tai suteikia jums galimybę koreguoti sąsają, perkelti elementus arba neleisti uždengti teksto laukų.
Gestų sistema taip pat plečiama įvykiais SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE ir SDL_EVENT_PINCH_ENDkurios aptinka žnybimo gestus priartinant ir atliekant panašius veiksmus. Be to, „Wayland“ aplinkoje ištaisytas daugiau nei penkių pelės mygtukų palaikymas ir „X11“ versijoje pristatytas tikslus slinkimas, pagerinantis tikslaus slinkimo sklandumą.
Galiausiai, SDL 3.4 apima SDL_GetEventDescription(), funkcija, skirta gauti anglišką įvykio aprašymą, skirta registravimui ir derinimui, o tai labai naudinga stebint retus įvesties elgesius keliose platformose.
Garsas: lankstesni darbo eigos ir nereikia pakartotinio sistemos apdorojimo
Garso posistemė taip pat sulaukė nemažai patobulinimų, ypatingą dėmesį skiriant Efektyvus apdorojimas ir vamzdynų valdymasPirmiausia, SDL_EVENT_AUDIO_DEVICE_ADDED dabar taip pat siunčiamas kiekvieno aptikto garso įrenginio inicijavimo metu, todėl lengviau aptikti ir išvardyti įrenginius nelaukiant dinaminių įvykių.
Dvi naujos funkcijos, SDL_PutAudioStreamDataNoCopy() ir SDL_PutAudioStreamPlanarData() suteikia daugiau parinkčių dirbant su garso srautais: pirmoji tam tikrais atvejais vengia nereikalingų kopijų, o antroji leidžia duomenis įvesti plokštuminiu formatu, o ne įterptais, idealiai tinka sudėtingesniems srautams arba integracijai su aukšto lygio garso apdorojimo bibliotekomis.
Be to, svarbiausia yra užuomina SDL_HINT_AUDIO_DEVICE_RAW_STREAM: ši užuomina rodo, kad operacinė sistema Garso nereikėtų papildomai apdoroti. (pvz., triukšmo slopinimas). Tai labai svarbu, jei jūsų programa ar žaidimas jau tvarko apdorojimą ir nenorite, kad OS trukdytų ir iškraipytų rezultatą. Taip pat pristatomas SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN, kuris leidžia tam tikriems srautams išlikti ir pasibaigus garso posistemės gyvavimo ciklui, o tai naudinga sudėtingesnėse architektūrose.
HID valdikliai ir įrenginiai
SDL 3.4 gerokai pagerina valdiklių ir HID įrenginių palaikymą, išplėsdamas aparatinės įrangos, kuri veikia iš karto be išorinės konfigūracijos, asortimentą. Visų pirma, ji prideda Patobulintas 8BitDo valdiklių palaikymas„FlyDigi“ ir „Hand Held Legend SINput“, kurios leidžia daugeliui trečiųjų šalių žaidimų pultelių veikti nuosekliau.
Jis taip pat įtrauktas Laidinis „Nintendo Switch 2“ valdiklio stovas Kai SDL kompiliuojamas su libusb, tai įdomu vartotojams, kurie teikia pirmenybę tiesioginiam ryšiui, o ne belaidžiam režimui. HID API lygmenyje SDL_hid_get_properties() susieja SDL ypatybes su HID įrenginiais, o SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER ypatybė leidžia gauti su SDL_hid_device susietą libusb rankenėlę, kai ji buvo atidaryta naudojant libusb.
Šie patobulinimai papildo tai, kad SDL 3.4 apima palaikymas naujajam „Steam“ valdikliui savo pradinėje ekosistemoje, ir tai labai gerai dera su jos vaidmeniu „Steam“ vykdymo aplinkoje ir dėmesiu žaidimams „Linux“ ir kitose platformose.
Įvykiai, sistema ir bendrosios priemonės
Be grafinių ir įvesties aspektų, SDL 3.4 pristato keletą įvykių sistemos ir bendrųjų įrankių pakeitimų, apie kuriuos verta žinoti. Pavyzdžiui, SDL_EVENT_WINDOW_EXPOSED Dabar, kai siunčiama keičiant lango dydį realiuoju laiku, „data1“ laukas užpildomas reikšme „true“, taip suteikiant papildomo konteksto.
Tai priduria SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGEDŠis įvykis suveikia, kai pasikeičia naudojamos darbalaukio ribos (pavyzdžiui, perkeliant užduočių juostas arba skydelius). Jis taip pat apima SDL_EVENT_SCREEN_KEYBOARD_SHOWN/SDL_EVENT_SCREEN_KEYBOARD_HIDDEN ir anksčiau minėtus suspaudimo įvykius, taip užtikrinant išsamesnę įvykių ekosistemą dinaminiams vartotojo sąsajos scenarijams.
Pelno pusėje, SDL_HINT_MAIN_CALLBACK_RATE dabar galima nustatyti kaip slankiojo kablelio reikšmę, suteikiant daugiau tikslumo; SDL_AddAtomicU32() Pridedama parama atominėms sudėtims 32 bitų neženkliuosiuose sveikuosiuose skaičiuose; ir SDL_GetSystemPageSize() grąžina sistemos puslapio dydį, kuris naudingas atliekant užduotis su mažu atminties lygiu.
Taip pat įtraukta SDL_ALIGNED()Ši makrokomanda nurodo, kad tam tikri duomenys turėtų būti išdėstyti tam tikru būdu, o tai labai svarbu našumo optimizavimui ir SIMD instrukcijų naudojimui. Tuo tarpu SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER leidžia apibrėžti pasirinktinę atminties išleidimo funkciją, kurią naudoja SDL_IOFromMem() ir SDL_IOFromConstMem(), suteikdama daugiau kontrolės integruojant SDL su savo paskirstytojais.
Dar vienas įdomus patobulinimas yra parama išsami žurnalo išvestis Kai aplinkos kintamasis DEBUG_INVOCATION yra nustatytas į „1“, tai skirta giliam bibliotekos inicijavimo ir elgsenos derinimui sudėtinguose kontekstuose.
Konkretūs patobulinimai sistemoje „Windows“
„Windows“ sistemoje SDL 3.4 apima reikšmingus garso, vaizdo ir įvesties sistemos pakeitimus. Vienas iš įdomių aspektų yra užuominų funkcija. SDL_HINT_RENDER_DIRECT3D11_WARPTai leidžia aktyvuoti WARP (D3D11 programinės įrangos rastravimo įrankį). Tai naudinga kompiuteriuose be suderinamo GPU arba virtualizuotose aplinkose, kur nėra tiesioginio spartinimo, bet vis tiek norite naudoti API.
WASAPI tvarkyklė pasinaudoja tuo, kad SDL_HINT_AUDIO_DEVICE_STREAM_ROLE Norint reguliuoti garso srauto kategoriją – tai svarbi integracija, užtikrinanti nuoseklų sistemos veikimą (pvz., žaidimo garsas, komunikacija ir kt.). Ji taip pat remiasi SDL_HINT_AUDIO_DEVICE_RAW_STREAM, kad nurodytų, ar tvarkyklė turėtų taikyti papildomą apdorojimą.
Užuomina įvedama klaviatūros įvesties pusėje. SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYSTai leidžia išjungti tam tikrus sistemos sparčiuosius klavišus, kai naudojama neapdorota įvestis, o tai labai praktiška žaidimams, kuriems reikia fiksuoti klavišų derinius be sistemos įsikišimo. O „GameInput“ API lygmenyje, SDL_HINT_WINDOWS_GAMEINPUT Pagal numatytuosius nustatymus jis yra išjungtas, todėl sumažėja galimų konfliktų kai kuriose aplinkose, kol jis nėra aiškiai sukonfigūruotas.
Taip pat pridedama SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER Norint gauti su ekranu susietą HMONITOR, tai labai naudinga, jei derinate SDL su klasikiniu Win32 kodu ir reikia koordinuoti langus ar monitorius.
macOS, iOS ir visionOS
„macOS“ sistemoje „SDL 3.4“ yra labai praktiškas patarimas: SDL_HINT_MAC_PASPAUSTI_IR_LAIKYTIŠis nustatymas kontroliuoja, ar laikant nuspaustą klavišą kartojamas paspaudimas, ar atidaromas akcentų meniu. Tai leidžia reguliuoti klaviatūros veikimą žaidimams ir programoms, kurioms reikia greito klavišų paspaudimo, o ne įprasto „macOS“ akcentų meniu.
„iOS“ sistemoje dabar SDL palaiko langų scenasTai išsprendžia įspėjimą „UIKIT klientui reikalingas atnaujinimas“ ir suderina biblioteką su šiuolaikinėmis UIKit praktikomis. Įvesta savybė SDL_PROP_WINDOW_CREATE_WINDOWSCENE_POINTER, skirta nurodyti lango sceną kuriant SDL langą, padedanti tinkamai integruoti programą į iOS langų sistemą.
„VisionOS“ ir tokiuose įrenginiuose kaip „Apple Vision Pro“ SDL 3.4 koreguoja langų elgseną ir atnaujinimo dažnius. Numatytasis atnaujinimo dažnis yra padidėja iki 90 Hzužtikrina sklandesnę patirtį, o SDL_SetWindowSize() efektyviai pakeičia lango dydį „Vision Pro“ akiniuose, suteikdamas daugiau išdėstymo valdymo galimybių mišrios realybės aplinkose.
„Linux“, „Wayland“, KMS/DRM ir „Vulkan“
„Linux“ pasaulyje SDL 3.4 turi daug naujų funkcijų. Visų pirma, ji prideda atominis KMSDRM palaikymasTai pagerina stabilumą ir sinchronizavimą, tiesiogiai veikdama su branduolio grafikos posisteme. Dėl to užuomina SDL_HINT_KMSDRM_ATOMIC leidžia valdyti, ar KMSDRM naudos šią atominę funkciją.
Veilando atveju įtraukiama: SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTERŠi funkcija leidžia gauti su ekranu susietą „wl_output“, taip palengvinant gilias integracijas su maketavimo įrankiu. Be to, ištaisytos problemos su pelėmis, turinčiomis daugiau nei penkis mygtukus, ir patobulintas tikslus slinkimas sistemoje „X11“, suteikiant daug geresnį valdymą programose, kurios labai priklauso nuo slinkimo.
Kalbant apie „Vulkan“, pristatoma SDL 3.4 atvaizdavimo paketavimas ir kiti API, tokių kaip „Vulkan“, patobulinimai, kurie sumažina nereikalingus iškvietimus ir pagerina bendrą našumą. Taip pat dirbama su logika, kuri aptinka Galingesnė „Vulkan“ GPU Sistemose su keliais GPU tai padeda automatiškai pasirinkti tinkamiausią įrenginį, ypač hibridinėse arba nešiojamųjų kompiuterių sistemose su integruotais ir dedikuotais GPU.
Be to, pridėta savybė SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER, skirta konfigūruoti „Vulkan“ parinktis kuriant GPU įrenginį, ir SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN, kad kuriant minėtą įrenginį būtų reikalingas aparatinės įrangos spartinimas. Sisteminiu lygmeniu SDL taip pat pozicionuojama kaip X11 įrankių rinkinys pristatant X11TK kaip atskirą X11 įrankių rinkinį SDL.
Emscripten ir naršyklės naudojimas
SDL 3.4 žymiai pagerina integraciją su Emscripten ir vykdymas žiniatinklio naršyklėseTai labai svarbu, jei norite perkelti savo žaidimą ar programėlę į internetą jo neperrašydami nuo nulio. Viena iš naujų funkcijų leidžia SDL langui „užpildyti dokumentą“ nebūtinai per visą ekraną.
Ankstesnėje versijoje buvo pristatytas SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT, o paskutinėje versijoje jis pertvarkytas pagal vėliavėlę. SDL_WINDOW_FILL_DOCUMENT ir SDL_SetWindowFillDocument() funkciją bei keletą susijusių savybių. Žymūs pavyzdžiai:
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING ir SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID_STRING, skirti nustatyti ir užklausti SDL naudojamos drobės ID.
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN ir SDL_PROP_WINDOW_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN, siekiant nurodyti ir patikrinti, ar langas turėtų užimti visą dokumentą.
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING ir SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING, norint nurodyti ir pateikti užklausą elementui, su kuriuo susieta klaviatūros įvestis.
Šios parinktys suteikia labai tikslią kontrolę Kaip SDL integruojasi su DOM ir canvas?Tai padeda išvengti įsilaužimų ir tarpinių sluoksnių dirbant su „Emscripten“. Jie taip pat leidžia lengviau užtikrinti SDL suderinamumą su žiniatinklio sistemomis arba sudėtingesnėmis integracijomis, kai drobė yra tik viena puslapio dalis.
„PlayStation 2“ ir kitos rečiau pasitaikančios platformos
Nors tai gali stebinti, SDL 3.4 taip pat atkreipia dėmesį į veteranų platformų, tokių kaip „PlayStation 2“,Pridėtos užuominos, kaip valdyti ekrano parametrus: SDL_HINT_PS2_GS_WIDTH, SDL_HINT_PS2_GS_HEIGHT, SDL_HINT_PS2_GS_PROGRESSIVE ir SDL_HINT_PS2_GS_MODE, kurios leidžia reguliuoti skiriamąją gebą, progresyvųjį režimą ir bendruosius grafikos sintezatoriaus nustatymus.
Šios detalės aiškiai rodo, kad SDL išlieka labai lankstus pasirinkimas namų gamybos projektai, emuliacija arba tyrimai senesnėse platformose, išskyrus stiprų dėmesį šiuolaikiniams kompiuteriams, mobiliesiems įrenginiams ir žiniatinkliui.
Procesų valdymas, kamerų leidimai ir ELF metaduomenys
Sistemos lygmeniu SDL 3.4 prideda savybę SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRINGTai naudojama naujų procesų, sukurtų iš SDL, darbiniam katalogui konfigūruoti. Tai supaprastina subprocesų arba išorinių įrankių vykdymą iš SDL programos, nereikalaujant prieigos prie operacinės sistemos API.
Fotografijos srityje SDL_GetCameraPermissionState() dabar grąžina tipo reikšmę SDL_CameraPermissionState vietoj bendro sveikojo skaičiaus, geriau suderinant semantiką ir palengvinant leidimų valdymą mobiliosiose ir stalinių kompiuterių platformose.
Unix sistemose SDL apima ELF pastabas, kurios apibūdina jo neprivalomos bibliotekos patalpos Laikantis formato, dokumentuoto systemd.io/ELF_DLOPEN_METADATA, idėja yra ta, kad distribucijos gali analizuoti šias pastabas ir automatiškai generuoti pakavimo priklausomybes naudodamos tokias priemones kaip „package-notes“. SDL teikia makrokomandą SDL_ELF_NOTE_DLOPEN, kad kitos bibliotekos ir žaidimai galėtų daryti tą patį, taip palengvindami daug aiškesnį priklausomybių valdymą.
Lango eiga ir animuoti žymekliai
Siekiant pagerinti naudotojo patirtį, SDL 3.4 prideda funkcijų, skirtų rodyti pažangą ir praturtinti sąsająPavyzdžiui, SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() ir SDL_GetWindowProgressValue() yra pristatomi, kad „Windows“ ir „Linux“ užduočių juostoje esančioje lango piktogramoje būtų rodomos progreso juostos.
Ši funkcija leidžia vartotojui matyti ilgos operacijos būsena (atsisiuntimai, įkėlimai, vidinės kompiliacijos ir kt.), net jei langas nėra priekiniame plane. Tai gana elegantiškas būdas pateikti atsiliepimus nekuriant papildomų HUD.
Kita vertus, SDL_CreateAnimatedCursor() leidžia sukurti animuotus spalvotus žymekliusTai suteikia vaizdinio žavesio žaidimams ar įrankiams, kuriuose žymeklis praneša apie būsenas (įkėlimas, galimas veiksmas, įspėjimas ir kt.). Kartu su nauja užuomina SDL_HINT_MOUSE_DPI_SCALE_CURSORS, kurios numatytoji reikšmė dabar yra „0“, kad žymekliai netikėtai nepakeistų dydžio DPI mastelio aplinkoje, tai suteikia labiau nuspėjamą žymeklio išvaizdos valdymą.
Su šiais pakeitimais – nuo 3D/2D GPU integracijos, vietinio PNG palaikymo, įvesties ir garso patobulinimų iki dėmesio šiuolaikinėms „Linux“, „Emscripten“, „VisionOS“ ir klasikinėms konsolėms – SDL 3.4 įtvirtina savo, kaip... labai išsamus įrankių rinkinys, skirtas kurti įvairias platformassumažinant išorines priklausomybes ir suteikiant tvirtą pagrindą iteracijai, negaištant visos dienos derinant problemas, nesusijusias su jūsų kodu.
