
Ha videojáték-fejlesztéssel vagy platformfüggetlen multimédiás alkalmazásokkal foglalkozik, valószínűleg hallott már az SDL-ről. érkezés de SDL 3.4A könyvtár jelentős előrelépést tesz a grafikai képességek, a platformtámogatás és a felhasználói élmény finomítására szolgáló eszközök tekintetében asztali, webes és mobil eszközökön egyaránt. Ez nem apró frissítés: mindent magában foglal a 2D renderelő motortól és a 3D GPU API-tól kezdve a hangkezelésen, illesztőprogramokon, tollbevitelen, modern Linux rendszereken és egyebeken át.
Bár az SDL 3 folyamatosan fejlődik, az ág A 3.4 egy nagyon stabil verziónak tűnik. Úgy tervezték, hogy segítsen az új és folyamatban lévő projekteknek kihasználni a teljesítménynöveléseket, az új API-kat és a jobb integrációt olyan környezetekkel, mint az Emscripten, a Wayland, a Vision Pro vagy akár a PlayStation 2, nagyon specifikus kontextusokban. Nézzük meg közelebbről az SDL 3.4 újdonságait, miért releváns a következő projekted szempontjából, és milyen technikai részleteket kell szem előtt tartanod, ha a legtöbbet szeretnéd kihozni belőle.
Az SDL 3.4 legfontosabb általános új funkciói
Az SDL 3.4 fő tevékenységi köre a következőkre összpontosít: Javítsa a 3D és a 2D közötti interoperabilitástEz kulcsfontosságú a játékmotorok és az olyan alkalmazások számára, amelyek 2D-s felületeket ötvöznek 3D-s tartalommal. Eddig a két réteg kombinálása több munkát igényelhetett a fejlesztőtől; ez a verzió új segédprogramokat és tulajdonságokat vezet be, amelyek megkönnyítik ezt a folyamatot.
A grafikák mellett a frissítés a következőket is tartalmazza: natív támogatás PNG képekhezJelentős fejlesztések történtek a beviteli rendszerben (egér, stylus, gesztusok, képernyő-billentyűzet), és számos specifikus változás történt Windows, macOS, Linux, Emscripten, iOS, visionOS és más kevésbé elterjedt platformokon. A Steam ökoszisztémával és annak futtatókörnyezetével való integráció is finomodott, ami kulcsfontosságú a Linux játékok és a Steam terjesztésre irányuló platformfüggetlen fejlesztés szempontjából.
A 3D GPU API és a 2D renderelés közötti interoperabilitás
Az SDL 3.4 egyik erőssége a gyorsítás 3D és 2D integrációA könyvtár új funkciókat vezet be GPU-alapú 2D renderelők létrehozásához, valamint az SDL által kezelt GPU-textúrák és pixelformátumok közötti információcseréhez.
- Hozzáteszi SDL_CreateGPURenderer() egy olyan 2D renderelő létrehozása, amely kihasználja az alapul szolgáló GPU API-t.
- Con SDL_GetGPURendererDevice() Lekérheti az adott renderelőhöz társított GPU-eszközt.
- Csatlakoznak SDL_CreateGPURenderState(), az SDL_SetGPURenderStateFragmentUniforms(), az SDL_SetGPURenderState() és az SDL_DestroyGPURenderState() függvényeket a fragment shaderekkel való együttműködéshez a 2D GPU renderelésen belül.
- Most már beengedték őket YUV textúrák és HDR színterek a GPU-alapú 2D renderelőben, ami különösen érdekes a csúcskategóriás videók és tartalmak esetében.
Olyan funkciókat is tartalmaz, mint például SDL_GetGPUDeviceProperties()Ez visszaadja a GPU-eszköz tulajdonságait, beleértve az eszköz nevét, az illesztőprogram nevét és verzióját, valamint egyéb, a kompatibilitási vagy diagnosztikai döntések szempontjából releváns információkat. Ezenkívül az `SDL_GetPixelFormatFromGPUTextureFormat()` és az `SDL_GetGPUTextureFormatFromPixelFormat()` lehetővé teszi a GPU-textúra-formátumok és az SDL pixel-formátumok közötti konverziót.
Ezzel párhuzamosan az ingatlan is benne foglaltatik SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER 2D textúra létrehozása egy meglévő GPU textúrából, és az SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER használata a 2D textúrához társított GPU textúra lekéréséhez a 2D GPU renderelő használatakor. Ez a megközelítés jelentősen csökkenti a súrlódást a GPU API-ban generált tartalom és a klasszikus SDL 2D pipeline keverésekor.
Fejlesztések a 2D renderelésében és a textúrakezelésben
Az SDL 3.4 túlmutat a puszta interoperabilitáson, és specifikus funkciókat is hozzáad a következőkhöz: finomhangolja a 2D renderelés minőségét és vezérlésétPéldául bevezetésre kerül az SDL_RenderTexture9GridTiled() függvény, amely lehetővé teszi a 9 rácsos renderelést „csempézett” módban lévő textúrákkal a nyújtás helyett, elkerülve a felületelemek vagy keretek deformációit.
A textúrák méretezésének kezeléséhez a következőket adjuk hozzá: SDL_GetDefaultTextureScaleMode() és az SDL_SetDefaultTextureScaleMode(), amely lehetővé teszi az új textúrák alapértelmezett skálázási módjának beállítását. Ehhez kapcsolódik az SDL_GetRenderTextureAddressMode() és az SDL_SetRenderTextureAddressMode(), valamint az SDL_TEXTURE_ADDRESS_WRAP konstans, amely a következőket biztosítja: textúra-csomagolás támogatása amikor a renderelő jelzi, hogy támogatja a tördelést (SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN).
Egy nagyon érdekes új funkció a retró esztétikájú játékok számára a SDL_SCALEMODE_PIXELART, egy pixel arthoz tervezett méretezési algoritmus, amely elkerüli a többi szűrési mód klasszikus elmosódását, és megőrzi a meghatározott éleket még a kép nagyítása esetén is.
Lehetőség van együttműködni is textúra palettákAz SDL_SetTexturePalette() és az SDL_GetTexturePalette() lehetővé teszi paletták hozzárendelését és lekérdezését a textúrákban, ami hasznos, ha régi grafikai stílusokat hozol létre újra, vagy bizonyos memória- és sávszélesség-folyamokat szeretnél optimalizálni.
Felületek tekintetében az SDL 3.4 magában foglalja a következőket: SDL_FelületForgatása() Egy felület elforgatott másolatainak létrehozásához az SDL_FLIP_HORIZONTAL_AND_VERTICAL tulajdonság hozzáadódik, amely egyszerre tükrözi a felületeket mindkét tengely mentén. Ezenkívül az SDL_PROP_SURFACE_ROTATION_NUMBER tulajdonság (amelyet később a végleges kiadásra jelölt változatban az SDL_PROP_SURFACE_ROTATION_FLOAT váltott fel) a kameraképek helyes megjelenítéséhez szükséges szög megadására szolgál.
Natív PNG-támogatás és felületbetöltés
A gyakorlatiasság szempontjából az egyik legüdvözlendőbb fejlesztés az, hogy az SDL 3.4 tartalmazza a következőket: natív PNG-támogatás...sok esetben külső könyvtárakra való támaszkodás nélkül. Ez sokat leegyszerűsít kis projektek és prototípusok.
- SDL_LoadPNG() Az SDL_LoadPNG_IO() függvény pedig lehetővé teszi a PNG képek közvetlen felületként való betöltését.
- SDL_SavePNG() Az SDL_SavePNG_IO() függvények pedig felületek PNG formátumban történő mentésére szolgálnak.
- Con SDL_Felület Feltöltése() Az SDL_LoadSurface_IO() automatikusan felismeri, hogy a fájl BMP vagy PNG formátumú-e, és betölti azt egy felületre anélkül, hogy a formátum miatt aggódnod kellene.
Ez az integrált támogatás a következőket jelenti: kevesebb függőség és külső konfigurációEz különösen hasznos több platformra fordításkor, vagy SDL használatakor olyan környezetekben, mint az Emscripten, ahol a segítőkönyvtárak számának csökkentése mind a bináris méretben, mind a bonyolultságban különbséget jelent.
Bevitel: egér, stylus, gesztusok és képernyő-billentyűzet
Az SDL 3.4 jelentősen javít mindent, ami a következőkkel kapcsolatos fejlett beviteli eszközökAz egér tartományban bevezetésre került az SDL_SetRelativeMouseTransform() függvény, amely lehetővé teszi egyéni transzformáció alkalmazását a relatív egérbemenetre, ami hasznos skálázási technikákhoz, tengelyinverzióhoz vagy speciális leképezésekhez.
A ceruzák és stylusok tekintetében úgy tűnik, SDL_GetPenDeviceType()amely lehetővé teszi annak megkülönböztetését, hogy a toll közvetlenül a képernyőn vagy egy különálló érintőpadon működik-e, ami nagyon hasznos részlet a felhasználói élmény eszköztípus szerinti igazításához.
Virtuális billentyűzettel rendelkező eszközökön az SDL olyan eseményeket ad hozzá, mint például SDL_EVENT_SCREEN_BYBUCKET_SHOWN és az SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, amelyek jelzik, hogy a képernyő-billentyűzet mikor van megjelenítve vagy rejtve. Ez mozgásteret biztosít a kezelőfelület beállításához, az elemek mozgatásához vagy a szövegmezők eltakarásának megakadályozásához.
A gesztusrendszert eseményekkel is bővítik. SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE és SDL_EVENT_PINCH_ENDamelyek érzékelik a csippentő gesztusokat zoomolás és hasonló műveletek esetén. Ezenkívül a Wayland környezetben kijavították az ötnél több egérgomb támogatását, és az X11-ben bevezették a precíziós görgetést, ami javítja a finom görgetés simábbságát.
Végül az SDL 3.4 magában foglalja a következőket: SDL_GetEventDescription(), egy függvény, amely egy esemény angol nyelvű leírását kéri le, naplózásra és hibakeresésre szolgál, ami nagyon hasznos, ha ritka bemeneti viselkedéseket követünk nyomon több platformon.
Hang: rugalmasabb munkafolyamatok és nincs szükség a rendszer újrafeldolgozására
Az audio alrendszer is megkapta a maga részét a fejlesztésekből, különös tekintettel a következőkre: Hatékony feldolgozás és folyamatvezérlésElőször is, az SDL_EVENT_AUDIO_DEVICE_ADDED mostantól minden észlelt audioeszköz inicializálása során elküldésre kerül, így könnyebben felfedezhetők és listázhatók az eszközök anélkül, hogy dinamikus eseményekre kellene várni.
Két új funkció, SDL_PutAudioStreamDataNoCopy() és az SDL_PutAudioStreamPlanarData() további lehetőségeket kínálnak az audio streamekkel való munka során: az első bizonyos esetekben elkerüli a felesleges másolásokat, a második pedig lehetővé teszi az adatok síkbeli formátumban történő bevitelét az összefonódó helyett, ami ideális fejlett streamekhez vagy magas szintű audiofeldolgozó könyvtárakkal való integrációhoz.
Ezenkívül az SDL_HINT_AUDIO_DEVICE_RAW_STREAM célzás központi szerepet kap: ez a célzás azt jelzi, hogy az operációs rendszer Nem szabad további hangfeldolgozást alkalmazni. (például zajszűrés). Ez kulcsfontosságú, ha az alkalmazásod vagy játékod már kezeli a feldolgozást, és nem szeretnéd, hogy az operációs rendszer beavatkozzon és torzítsa az eredményt. Bevezetésre került az SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN is, amely lehetővé teszi bizonyos adatfolyamok túlélését az audio alrendszer életciklusán túl, ami hasznos a bonyolultabb architektúrákban.
HID vezérlők és eszközök
Az SDL 3.4 jelentősen javítja a vezérlők és HID-eszközök támogatását, kibővítve a külső konfiguráció nélkül, azonnal működő hardverek körét. Különösen a következőket adja hozzá: Továbbfejlesztett támogatás a 8BitDo vezérlőkhözA FlyDigi és a Hand Held Legend SINput megkönnyíti a számos harmadik féltől származó gamepad következetesebb működését.
Az is be van építve Vezetékes Nintendo Switch 2 kontroller állvány Amikor az SDL-t libusb-vel fordítják, ez érdekes lehet azoknak a felhasználóknak, akik a közvetlen kapcsolatot részesítik előnyben a vezeték nélküli móddal szemben. A HID API szintjén az SDL_hid_get_properties() függvény úgy tűnik, hogy az SDL tulajdonságokat HID eszközökhöz társítja, az SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER tulajdonság pedig lehetővé teszi egy SDL_hid_device eszközhöz társított libusb handle lekérését, amikor azt a libusb-vel nyitották meg.
Ezek a fejlesztések kiegészítik azt a tényt, hogy az SDL 3.4 tartalmazza a következőket: támogatás az új Steam Controllerhez a belépő szintű ökoszisztémáján belül, és ez nagyon jól illeszkedik a Steam futtatókörnyezetben betöltött szerepéhez, valamint a Linux és más platformokon játszható játékokra való összpontosításához.
Események, rendszer- és általános segédprogramok
A grafikai és beviteli szempontokon túl az SDL 3.4 számos olyan változást vezet be az eseménykezelő rendszerben és az általános segédprogramokban, amelyekről érdemes tudni. Például, SDL_EVENT_WINDOW_EXPOSED Mostantól a data1 mezőt igaz értékkel tölti fel, amikor élő ablakméretezés során küldi el, ami extra kontextust biztosít.
Hozzáteszi SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGEDEz az esemény akkor aktiválódik, amikor a használható asztali határok megváltoznak (például tálcák vagy panelek mozgatásakor). Magában foglalja az SDL_EVENT_SCREEN_KEYBOARD_SHOWN/SDL_EVENT_SCREEN_KEYBOARD_HIDDEN eseményeket és a korábban említett csippentési eseményeket is, így átfogóbb esemény-ökoszisztémát biztosít a dinamikus felhasználói felületekhez.
A profit oldalon, SDL_HINT_MAIN_CALLBACK_RATE mostantól lebegőpontos értékként is beállítható, ami nagyobb pontosságot biztosít; SDL_AddAtomicU32() Támogatja az atomi összeadásokat 32 bites előjel nélküli egész számokon; és SDL_GetSystemPageSize() visszaadja a rendszer oldalméretét, ami hasznos alacsony memória-szintű feladatokhoz.
Tartalmazza is SDL_ALIGNED()Ez a makró azt jelzi, hogy bizonyos adatoknak meghatározott igazítással kell rendelkezniük, ami nagyon fontos a teljesítményoptimalizálás és a SIMD utasítások használata szempontjából. Eközben az SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER lehetővé teszi egy egyéni felszabadító függvény definiálását az SDL_IOFromMem() és az SDL_IOFromConstMem() által használt memóriához, így nagyobb kontrollt biztosítva az SDL és a saját memóriafoglalások integrálásakor.
Egy másik érdekes fejlesztés a támogatás részletes naplókimenet Amikor a DEBUG_INVOCATION környezeti változó „1” értékre van állítva, az a könyvtár inicializálásának és viselkedésének mélyreható hibakereséséhez szolgál összetett kontextusokban.
Konkrét fejlesztések a Windows rendszerben
Windows rendszeren az SDL 3.4 jelentős változásokat tartalmaz a hang, a videó és a beviteli rendszer tekintetében. Az egyik érdekes pont a tipp funkció. SDL_HINT_RENDER_DIRECT3D11_WARPEz lehetővé teszi a WARP (a D3D11 szoftveres raszterezőjének) aktiválását. Ez hasznos kompatibilis GPU nélküli gépeken, vagy virtualizált környezetekben, ahol nincs közvetlen gyorsítás, de továbbra is használni szeretnéd az API-t.
A WASAPI illesztőprogram kihasználja a következőket: SDL_HINT_AUDIO_DEVICE_STREAM_ROPE Az audiofolyam kategóriájának beállításához, ami fontos integráció a rendszerkonzisztens viselkedéshez (pl. játékhangok, kommunikáció stb.). Az SDL_HINT_AUDIO_DEVICE_RAW_STREAM paraméterre is támaszkodik annak jelzésére, hogy a meghajtónak alkalmaznia kell-e extra feldolgozást.
A tippet a billentyűzet bemeneti oldalán kell beírni. SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYSEz lehetővé teszi bizonyos rendszerparancsok letiltását nyers bevitel használatakor, ami nagyon praktikus azoknál a játékoknál, amelyeknek rendszerbeavatkozás nélkül kell rögzíteniük a billentyűkombinációkat. A GameInput API szintjén pedig, SDL_HINT_WINDOWS_GAMEINPUT Alapértelmezés szerint le van tiltva, ami csökkenti a potenciális ütközéseket bizonyos környezetekben, amíg explicit módon be nem állítják.
Azt is hozzáteszik SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER A képernyőhöz társított HMONITOR lekérése nagyon hasznos, ha az SDL-t klasszikus Win32 kóddal keverjük, és ablakokat vagy monitorokat kell koordinálnunk.
macOS, iOS és visionOS
macOS rendszeren az SDL 3.4 egy nagyon praktikus tippet tartalmaz: SDL_HINT_MAC_NYOMJA_ÉS_TARTSAEz a beállítás szabályozza, hogy egy billentyű lenyomva tartása megismétli-e a billentyűleütést, vagy megnyitja-e az akcentusmenüt. Ez lehetővé teszi a billentyűzet viselkedésének módosítását olyan játékokhoz és alkalmazásokhoz, amelyek gyors billentyűismétlést igényelnek a tipikus macOS akcentusmenü helyett.
iOS-en, most SDL támogatja az ablakjeleneteketEz megoldja a „CLIENT OF UIKIT REQUIRES UPDATE” figyelmeztetést, és összehangolja a könyvtárat a modern UIKit gyakorlatokkal. Az SDL_PROP_WINDOW_CREATE_WINDOWSCENE_POINTER tulajdonság bevezetésre került, hogy megadja az ablakjelenetet SDL ablak létrehozásakor, segítve az alkalmazás megfelelő integrálását az iOS ablakkezelő rendszerébe.
A visionOS-ben és az olyan eszközökben, mint az Apple Vision Pro, az SDL 3.4 beállítja az ablak viselkedését és a frissítési gyakoriságot. Az alapértelmezett frissítési gyakoriság a 90 Hz-re nőzökkenőmentesebb élményt nyújt, az SDL_SetWindowSize() pedig hatékonyan módosítja az ablakméretet a Vision Pro headseteken, nagyobb kontrollt biztosítva az elrendezés felett a vegyes valóság környezetekben.
Linux, Wayland, KMS/DRM és Vulkan
A Linux világában az SDL 3.4 számos új funkcióval érkezik. Egyrészt hozzáadja atomi támogatás a KMSDRM-hezEz a kernel grafikus alrendszerével való közvetlen együttműködés révén javítja a stabilitást és a szinkronizációt. Ehhez kapcsolódóan az SDL_HINT_KMSDRM_ATOMIC hint lehetővé teszi annak szabályozását, hogy a KMSDRM használja-e ezt az atomi funkciót.
Wayland esetében a következőket építik be: SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTEREz a funkció lehetővé teszi a képernyőhöz társított wl_output lekérését, megkönnyítve a kompozitorral való mély integrációt. Ezenkívül kijavították az ötnél több gombbal rendelkező egerekkel kapcsolatos problémákat, és javult az X11 alatti precíziós görgetés, ami sokkal finomabb vezérlést biztosít a görgetésre nagymértékben támaszkodó alkalmazásokban.
A Vulkant illetően az SDL 3.4 bemutatja a kötegelt renderelés és egyéb fejlesztések az API-khoz, például a Vulkanhoz, amelyek csökkentik a redundáns draw hívásokat és javítják az általános teljesítményt. A fejlesztések folynak a logikán is, amely érzékeli a Erősebb Vulkan GPU Több GPU-val rendelkező rendszerekben segít a legmegfelelőbb eszköz automatikus kiválasztásában, különösen hibrid vagy laptop rendszerekben, amelyek integrált és dedikált GPU-kkal rendelkeznek.
Ezenkívül az SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER tulajdonság hozzáadódik a Vulkan-beállítások konfigurálásához a GPU-eszköz létrehozásakor, valamint az SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN tulajdonsághoz, amely hardveres gyorsítást igényel az eszköz létrehozásakor. Rendszerszintű szinten az SDL szintén a következőképpen helyezkedik el: X11 eszközkészlet az X11TK bevezetésével, mint saját X11 eszközkészlettel az SDL-hez.
Emscripten és böngészőhasználat
Az SDL 3.4 jelentősen javítja az integrációját a következővel: Emscripten és végrehajtás webböngészőkbenEz kulcsfontosságú, ha a játékodat vagy alkalmazásodat át szeretnéd vinni a webre anélkül, hogy a nulláról kellene újraírnod. Az egyik új funkció lehetővé teszi, hogy az SDL ablak "kitöltse a dokumentumot" anélkül, hogy feltétlenül teljes képernyős lenne.
Egy korábbi verzióban bevezették az SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT-et, a végleges kiadásban pedig a jelző köré szervezték át. SDL_WINDOW_FILL_DOCUMENT és az SDL_SetWindowFillDocument() függvény, számos kapcsolódó tulajdonsággal együtt. Figyelemre méltó példák:
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING és SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID_STRING az SDL által használt vászon azonosítójának beállításához és lekérdezéséhez.
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN és az SDL_PROP_WINDOW_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN paramétereket, amelyek jelzik és ellenőrzik, hogy az ablaknak ki kell-e töltenie a teljes dokumentumot.
- Az SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING és az SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING paraméterekkel megadhatja és lekérdezheti azt az elemet, amelyhez a billentyűzetbemenet kapcsolódik.
Ezek a lehetőségek nagyon finom kontrollt biztosítanak Hogyan integrálódik az SDL a DOM-mal és a canvas-szal?Ez segít elkerülni a hackeléseket és a köztes rétegeket az Emscripten használata során. Emellett megkönnyítik az SDL kompatibilitását a webes keretrendszerekkel vagy az összetettebb integrációkkal, ahol a vászon csak az oldal egy részét képezi.
PlayStation 2 és más kevésbé elterjedt platformok
Bár meglepő lehet, az SDL 3.4 erre is figyelmet fordít veterán platformok, mint például a PlayStation 2Tippek kerültek hozzáadásra a megjelenítési paraméterek vezérléséhez: SDL_HINT_PS2_GS_WIDTH, SDL_HINT_PS2_GS_HEIGHT, SDL_HINT_PS2_GS_PROGRESSIVE és SDL_HINT_PS2_GS_MODE, amelyek lehetővé teszik a felbontás, a progresszív mód és a grafikus szintetizátor általános beállításainak módosítását.
Ezek a részletek egyértelművé teszik, hogy az SDL továbbra is nagyon rugalmas lehetőség házilag készített projektek, emuláció vagy kutatás régebbi platformokon, eltekintve a modern PC-kre, mobilokra és webre való erős fókuszától.
Folyamatkezelés, kameraengedélyek és ELF metaadatok
Rendszerszinten az SDL 3.4 hozzáadja a tulajdonságot SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRINGEz az SDL-ből létrehozott új folyamatok munkakönyvtárának konfigurálására szolgál. Ez leegyszerűsíti az alfolyamatok vagy külső eszközök futtatását az SDL alkalmazásból anélkül, hogy az operációs rendszer API-jához kellene hozzáférni.
A fotózás területén SDL_GetCameraPermissionState() most egy típus szerinti értéket ad vissza SDL_KameraEngedélyÁllapot egy általános egész szám helyett, jobban összehangolva a szemantikát és megkönnyítve az engedélyek kezelését mobil és asztali platformokon.
Unix rendszerekben az SDL ELF megjegyzéseket tartalmaz, amelyek leírják a nem kötelező könyvtári létesítmények A systemd.io/ELF_DLOPEN_METADATA oldalon dokumentált formátumot követve az ötlet az, hogy a disztribúciók elemezhessék ezeket a jegyzeteket, és automatikusan generálhassanak csomagolási függőségeket olyan eszközökkel, mint a package-notes. Az SDL biztosítja az SDL_ELF_NOTE_DLOPEN makrót, hogy más könyvtárak és játékok is ugyanezt megtehessék, ami sokkal letisztultabb függőségkezelést tesz lehetővé.
Ablakfolyamat és animált kurzorok
A felhasználói élmény javítása érdekében az SDL 3.4 olyan funkciókat tartalmaz, amelyek a következőkre irányulnak: a haladás megjelenítése és a felület gazdagításaPéldául az SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() és SDL_GetWindowProgressValue() metódusok a Windows és Linux tálcán található ablak ikonján megjelenítik a folyamatjelzőket.
Ez a funkció lehetővé teszi a felhasználó számára, hogy lássa a hosszú működési állapot (letöltések, feltöltések, belső buildek stb.) még akkor is, ha az ablak nincs az előtérben. Ez egy meglehetősen elegáns módja a visszajelzésnek anélkül, hogy további HUD-okat kellene tervezni.
Másrészt az SDL_CreateAnimatedCursor() lehetővé teszi a következőket: animált színes kurzorok létrehozásaEz egy csipetnyi vizuális csillogást ad azoknak a játékoknak vagy eszközöknek, ahol a kurzor állapotokat közöl (betöltés, lehetséges művelet, riasztás stb.). Az új SDL_HINT_MOUSE_DPI_SCALE_CURSORS tippel kombinálva, amely mostantól alapértelmezetten "0"-ra van állítva, hogy megakadályozza a kurzorok váratlan méretváltozását DPI-skálázott környezetekben, kiszámíthatóbb kontrollt biztosít a mutató megjelenése felett.
Ezekkel a változtatásokkal – a 3D/2D GPU integrációtól kezdve a natív PNG támogatáson, a bemeneti és hangfejlesztéseken át a modern Linux, Emscripten, visionOS és klasszikus konzolok iránti figyelemig – az SDL 3.4 megszilárdítja pozícióját, mint... egy nagyon komplett eszköztár a platformfüggetlen fejlesztéshezminimalizálja a külső függőségeket, és szilárd alapot kínál az iterációhoz anélkül, hogy egész nap a saját kódodhoz nem kapcsolódó problémák hibakeresésével kellene foglalkoznod.
