SDL 3.4 styrker interoperabiliteten mellom 3D GPU API og 2D-gjengivelse

  • SDL 3.4 styrker interoperabiliteten mellom 3D GPU API og 2D-rendering, med nye renderere, GPU-tilstander og støtte for YUV og HDR.
  • Denne versjonen legger til innebygd PNG-støtte, nye teksturskalerings- og rutingalternativer, animerte markører og avanserte input- og vindushendelser.
  • Den inkluderer spesifikke forbedringer for Windows, macOS, Linux, Emscripten, iOS og visionOS, samt utvidet støtte for kontrollere, HID og atomic KMSDRM.
  • SDL 3.4 er etablert som en moden versjon av SDL3, med større stabilitet, bedre ytelse og dypere integrasjon med Steam, Vulkan og nettplattformer.

SLD 3.4

Hvis du jobber med videospillutvikling eller multimediaapplikasjoner på tvers av plattformer, har du sannsynligvis hørt om SDL. ankomsten de SDL 3.4Biblioteket tar et betydelig sprang fremover når det gjelder grafikkmuligheter, plattformstøtte og verktøy for å forbedre brukeropplevelsen på tvers av stasjonære datamaskiner, nett og mobile enheter. Dette er ingen liten oppdatering: den omfatter alt fra 2D-renderingsmotoren og 3D GPU API til lydhåndtering, drivere, penninndata, moderne Linux-systemer og mer.

Selv om SDL 3 fortsetter å utvikle seg, er grenen 3.4 presenterer seg som en veldig solid versjon Utviklet for å hjelpe nye og pågående prosjekter med å dra nytte av ytelsesforbedringer, nye API-er og bedre integrasjon med miljøer som Emscripten, Wayland, Vision Pro eller til og med PlayStation 2 i svært spesifikke kontekster. La oss se nærmere på hva som er nytt i SDL 3.4, hvorfor det er relevant for ditt neste prosjekt, og hvilke tekniske detaljer du bør huske på hvis du vil få mest mulig ut av det.

De viktigste generelle nye funksjonene i SDL 3.4

Hovedarbeidslinjen til SDL 3.4 fokuserer på Forbedre interoperabilitet mellom 3D og 2DDette er nøkkelen for spillmotorer og applikasjoner som blander 2D-grensesnitt med 3D-innhold. Frem til nå har det å kombinere begge lagene krevd mer arbeid fra utvikleren. Denne versjonen introduserer nye verktøy og egenskaper som forenkler denne prosessen.

I tillegg til grafikken inkluderer oppdateringen innebygd støtte for PNG-bilderDet er bemerkelsesverdige forbedringer i inndatasystemet (mus, pekepenn, bevegelser, skjermtastatur) og en rekke spesifikke endringer for Windows, macOS, Linux, Emscripten, iOS, visionOS og andre mindre vanlige plattformer. Integrasjonen med Steam-økosystemet og kjøretiden har også blitt forbedret, noe som er avgjørende for Linux-spill og plattformuvikling rettet mot Steam-distribusjon.

SDL 3
Relatert artikkel:
SDL 3: The New Era for Linux Development and Cross-Platform Games

Interoperabilitet mellom 3D GPU API og 2D-gjengivelse

En av styrkene til SDL 3.4 er forbedringen til integrasjon mellom 3D og 2DBiblioteket introduserer nye funksjoner for å lage GPU-baserte 2D-renderere og for å utveksle informasjon mellom GPU-teksturer og pikselformater som håndteres av SDL.

  • Det legger til SDL_CreateGPURenderer() for Ã¥ lage en 2D-renderer som utnytter det underliggende GPU API-et.
  • med SDL_GetGPURendererDevice() Du kan hente GPU-enheten som er tilknyttet den gjengivelsesprogrammet.
  • De blir med SDL_CreateGPURenderState(), SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() og SDL_DestroyGPURenderState() for Ã¥ fungere med fragmentshadere i 2D GPU-gjengivelse.
  • NÃ¥ er de tatt opp YUV-teksturer og HDR-fargerom i den GPU-baserte 2D-rendereren, som er spesielt interessant for video og innhold i høy kvalitet.

Den inneholder også funksjoner som SDL_GetGPUDeviceProperties()Dette returnerer GPU-enhetsegenskaper, inkludert enhetsnavn, drivernavn og versjon, og annen informasjon som er relevant for kompatibilitet eller diagnostiske beslutninger. I tillegg forenkler `SDL_GetPixelFormatFromGPUTextureFormat()` og `SDL_GetGPUTextureFormatFromPixelFormat()` konvertering mellom GPU-teksturformater og SDL-pikselformater.

Parallelt er eiendommen inkludert SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER For å lage en 2D-tekstur fra en eksisterende GPU-tekstur, og SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER for å hente GPU-teksturen som er knyttet til en 2D-tekstur når du bruker 2D GPU-rendereren. Denne tilnærmingen reduserer friksjonen betydelig når du blander innhold generert i GPU API-et med den klassiske SDL 2D-pipelinen.

Forbedringer i 2D-gjengivelse og teksturhåndtering

SDL 3.4 går utover ren interoperabilitet og legger til spesifikke funksjoner for finjuster kvaliteten og kontrollen til 2D-gjengivelseFor eksempel introduseres SDL_RenderTexture9GridTiled(), som tillater 9-rutenett-gjengivelse med teksturer i "flislagt" modus i stedet for å strekke dem, og unngår deformasjoner i grensesnittelementer eller rammer.

For å administrere hvordan teksturer skaleres, legges følgende til SDL_GetDefaultTextureScaleMode() og SDL_SetDefaultTextureScaleMode(), som tillater å angi en standard skaleringsmodus for nye teksturer. Relatert til dette er SDL_GetRenderTextureAddressMode() og SDL_SetRenderTextureAddressMode(), sammen med konstanten SDL_TEXTURE_ADDRESS_WRAP, som gir støtte for teksturomslag når rendereren indikerer at den støtter innpakning (SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN).

En veldig interessant ny funksjon for spill med retro-estetikk er SDL_SCALEMODE_PIXELART, en skaleringsalgoritme utviklet for pikselkunst som unngår den klassiske uskarpheten i andre filtreringsmoduser, og bevarer definerte kanter selv når bildet forstørres kraftig.

Det er også mulighet for å jobbe med teksturpaletterSDL_SetTexturePalette() og SDL_GetTexturePalette() lar deg tilordne og spørre paletter i teksturer, noe som er nyttig hvis du gjenskaper gamle grafikkstiler eller ønsker å optimalisere bestemte minne- og båndbreddeflyter.

Når det gjelder overflater, inneholder SDL 3.4 SDL_RoterOverflate() For å lage roterte kopier av en overflate, legges SDL_FLIP_HORIZONTAL_AND_VERTICAL til for å vende overflater samtidig på begge aksene. I tillegg brukes egenskapen SDL_PROP_SURFACE_ROTATION_NUMBER (senere erstattet av SDL_PROP_SURFACE_ROTATION_FLOAT i den endelige versjonen av kandidaten) til å spesifisere vinkelen som kreves for å vise kamerabilder riktig.

Støtte for innebygd PNG og overflateinnlasting

En av de mest positive forbedringene når det gjelder praktisk anvendelighet er at SDL 3.4 inkluderer innebygd støtte for PNG...uten å være avhengig av eksterne biblioteker i mange tilfeller. Dette forenkler mye små prosjekter og prototyper.

  • SDL_LoadPNG() og SDL_LoadPNG_IO() tillater lasting av PNG-bilder direkte som overflater.
  • SDL_SavePNG() og SDL_SavePNG_IO() brukes til Ã¥ lagre overflater i PNG-format.
  • med SDL_LoadSurface() SDL_LoadSurface_IO() oppdager automatisk om filen er BMP eller PNG og laster den inn pÃ¥ en overflate uten at du trenger Ã¥ bekymre deg for formatet.

Denne integrerte støtten omsettes til færre avhengigheter og eksterne konfigurasjonerDette er spesielt nyttig når man kompilerer for flere plattformer eller bruker SDL i miljøer som Emscripten, der det å redusere antallet hjelpebiblioteker utgjør en forskjell i både binærstørrelse og kompleksitet.

Inndata: mus, pekepenn, bevegelser og skjermtastatur

SDL 3.4 forbedrer alt som er relatert til betraktelig avanserte inndataenheterI musedomenet introduseres SDL_SetRelativeMouseTransform(), som tillater bruk av en tilpasset transformasjon på den relative museinngangen, noe som er nyttig for skaleringsteknikker, akseinversjon eller spesielle mappinger.

Når det gjelder blyanter og pekepenner, ser det ut til at SDL_HentPenEnhetstype()som lar deg skille mellom om pennen virker direkte på skjermen eller på en separat berøringsplate, en veldig nyttig detalj for å tilpasse brukeropplevelsen i henhold til enhetstypen.

På enheter med et virtuelt tastatur legger SDL til hendelser som SDL_EVENT_SCREEN_TASTATUR_VIST og SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, som rapporterer når skjermtastaturet vises eller skjules. Dette gir deg spillerom til å justere grensesnittet, flytte elementer eller forhindre at tekstfelt dekkes til.

Bevegelsessystemet utvides også med hendelser SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE og SDL_EVENT_PINCH_ENDsom oppdager klypebevegelser for zooming og lignende handlinger. I tillegg er støtte for mer enn fem museknapper korrigert i Wayland-miljøet, og presisjonsrulling er introdusert i X11, noe som forbedrer jevnheten ved finrulling.

Til slutt inneholder SDL 3.4 SDL_GetEventDescription(), en funksjon for å få en engelsk beskrivelse av en hendelse, beregnet for logging og feilsøking, noe som er veldig nyttig når du sporer sjeldne input-atferder på tvers av flere plattformer.

Lyd: mer fleksible arbeidsflyter og ingen systembehandling på nytt

Lydsystemet får også sin del av forbedringene, med et sterkt fokus på Effektiv prosessering og rørledningskontrollTil å begynne med sendes nå også SDL_EVENT_AUDIO_DEVICE_ADDED under initialisering for hver oppdagede lydenhet, noe som gjør det enklere å oppdage og liste opp enheter uten å måtte vente på dynamiske hendelser.

To nye funksjoner, SDL_PutAudioStreamDataNoCopy() og SDL_PutAudioStreamPlanarData(), gir flere alternativer når man jobber med lydstrømmer: den første unngår unødvendige kopier i visse tilfeller, og den andre lar data legges inn i planformat i stedet for sammenflettet, ideelt for avanserte strømmer eller integrasjon med lydbehandlingsbiblioteker på høyt nivå.

I tillegg er SDL_HINT_AUDIO_DEVICE_RAW_STREAM-hintet sentralt: dette hintet indikerer at operativsystemet Du bør ikke bruke ekstra behandling på lyden. (som støydemping). Dette er viktig hvis applikasjonen eller spillet ditt allerede håndterer behandlingen, og du ikke vil at operativsystemet skal forstyrre og forvrenge resultatet. SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN er også introdusert, som lar visse strømmer overleve utover lydsystemets livssyklus, noe som er nyttig i mer komplekse arkitekturer.

HID-kontrollere og -enheter

SDL 3.4 forbedrer støtten for kontrollere og HID-enheter betydelig, og utvider utvalget av maskinvare som fungerer rett ut av esken uten ekstern konfigurasjon. Spesielt legger den til Forbedret støtte for 8BitDo-kontrollereFlyDigi og Hand Held Legend SINput, som gjør det enklere for mange tredjeparts gamepads å fungere mer konsekvent.

Det er også innarbeidet Kablet Nintendo Switch 2-kontrollerstativ Når SDL kompileres med libusb, er dette interessant for brukere som foretrekker en direkte tilkobling fremfor trådløs modus. På HID API-nivå ser det ut til at SDL_hid_get_properties() assosierer SDL-egenskaper med HID-enheter, og egenskapen SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER tillater henting av libusb-håndtaket som er assosiert med en SDL_hid_device når den har blitt åpnet med libusb.

Disse forbedringene kommer i tillegg til det faktum at SDL 3.4 inkluderer støtte for den nye Steam-kontrolleren innenfor sitt inngangsøkosystem, og det passer veldig godt med rollen i Steam-kjøretiden og fokuset på spilling på Linux og andre plattformer.

Hendelser, system og generelle verktøy

Utover de grafiske aspektene og input-aspektene introduserer SDL 3.4 en rekke endringer i hendelsessystemet og generelle verktøy som det er verdt å vite om. For eksempel, SDL_EVENT_VINDU_EKSPONERT Den fyller nå data1-feltet med true når det sendes under en endring av størrelsen på et vindu i sanntid, noe som gir ekstra kontekst.

Det legger til SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGEDDenne hendelsen utløses når de brukbare skrivebordsgrensene endres (for eksempel når oppgavelinjer eller paneler flyttes). Den inkluderer også SDL_EVENT_SCREEN_KEYBOARD_SHOWN/SDL_EVENT_SCREEN_KEYBOARD_HIDDEN og de tidligere nevnte pinch-hendelsene, og gir dermed et mer omfattende hendelsesøkosystem for dynamiske brukergrensesnittscenarier.

På profittsiden, SDL_HINT_MAIN_CALLBACK_RATE kan nå settes som en flyttallverdi, noe som gir mer presisjon; SDL_AddAtomicU32() Den legger til støtte for atomære addisjoner på 32-bits usignerte heltall; og SDL_GetSystemPageSize() returnerer systemsidestørrelsen, nyttig for oppgaver med lavt minnenivå.

Også inkludert SDL_ALIGNED()Denne makroen indikerer at visse data bør ha en spesifikk justering, noe som er svært relevant for ytelsesoptimaliseringer og bruk av SIMD-instruksjoner. I mellomtiden lar SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER deg definere en tilpasset frigjøringsfunksjon for minnet som brukes av SDL_IOFromMem() og SDL_IOFromConstMem(), noe som gir deg mer kontroll når du integrerer SDL med dine egne allokatorer.

En annen interessant forbedring er støtten for detaljert loggutdata Når miljøvariabelen DEBUG_INVOCATION er satt til "1", er den ment for dyp feilsøking av bibliotekinitialisering og -virkemåte i komplekse kontekster.

Spesifikke forbedringer i Windows

På Windows inkluderer SDL 3.4 betydelige endringer som påvirker lyd, video og inndatasystemet. Et av de interessante punktene er hintfunksjonen. SDL_HINT_RENDER_DIRECT3D11_WARPDette lar deg aktivere WARP (D3D11s programvarerasterisering). Dette er nyttig på maskiner uten kompatibel GPU eller i virtualiserte miljøer der det ikke er noen direkte akselerasjon, men du fortsatt vil bruke API-et.

WASAPI-sjåføren utnytter SDL_HINT_AUDIO_DEVICE_STREAM_ROLE For å justere lydstrømkategorien, en viktig integrasjon for systemkonsistent oppførsel (f.eks. spillyd, kommunikasjon osv.). Den er også avhengig av SDL_HINT_AUDIO_DEVICE_RAW_STREAM for å indikere om driveren skal bruke ekstra behandling eller ikke.

Hinten legges inn på tastatursiden. SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYSDette lar deg deaktivere visse systemsnarveier når du bruker rå input, noe som er veldig praktisk for spill som trenger å fange opp tastekombinasjoner uten systemforstyrrelser. Og på GameInput API-nivå, SDL_HINT_WINDOWS_GAMEINPUT Den er deaktivert som standard, noe som reduserer potensielle konflikter i enkelte miljøer inntil den er eksplisitt konfigurert.

Det er også lagt til SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER Å hente HMONITOR tilknyttet en skjerm, noe som er veldig nyttig hvis du blander SDL med klassisk Win32-kode og trenger å koordinere vinduer eller skjermer.

macOS, iOS og visionOS

På macOS inkluderer SDL 3.4 et veldig praktisk tips: SDL_HINT_MAC_PRESS_AND_HOLDDenne innstillingen styrer om det å holde nede en tast gjentar tastetrykket eller åpner aksentmenyen. Dette lar deg justere tastaturets virkemåte for spill og apper som krever rask tastegjentakelse i stedet for den typiske macOS-aksentmenyen.

På iOS, SDL nå støtter vindusscenerDette løser advarselen «CLIENT OF UIKIT REQUIRES UPDATE» og justerer biblioteket med moderne UIKit-praksis. Egenskapen SDL_PROP_WINDOW_CREATE_WINDOWSCENE_POINTER introduseres for å spesifisere vindusscenen når et SDL-vindu opprettes, noe som bidrar til å integrere appen riktig i iOS-vindusystemet.

I visionOS og enheter som Apple Vision Pro justerer SDL 3.4 vindusoppførsel og oppdateringsfrekvenser. Standard oppdateringsfrekvens er øker til 90 Hzgir en jevnere opplevelse, og SDL_SetWindowSize() endrer effektivt vindusstørrelsen på Vision Pro-hodesett, noe som gir mer kontroll over oppsettet i blandede virkelighetsmiljøer.

Linux, Wayland, KMS/DRM og Vulkan

I Linux-verdenen kommer SDL 3.4 med mange nye funksjoner. For det første legger den til atomstøtte for KMSDRMDette forbedrer stabilitet og synkronisering ved å jobbe direkte med kjernens grafikksystem. Relatert til dette gir hintet SDL_HINT_KMSDRM_ATOMIC kontroll over om KMSDRM skal bruke denne atomfunksjonaliteten eller ikke.

For Wayland er følgende innlemmet: SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTERDenne funksjonen lar deg hente wl_output knyttet til en skjerm, noe som muliggjør dype integrasjoner med compositoren. I tillegg er problemer med mus med mer enn fem knapper løst, og presisjonsrulling under X11 er forbedret, noe som gir en mye finere følelse av kontroll i applikasjoner som er sterkt avhengige av rulling.

Når det gjelder Vulkan, introduserer SDL 3.4 gjengivelsesbatching og andre forbedringer for API-er som Vulkan, som reduserer redundante tegnekall og forbedrer den generelle ytelsen. Det jobbes også med logikken som oppdager Kraftigere Vulkan GPU I systemer med flere GPU-er hjelper det å automatisk velge den mest passende enheten, spesielt i hybrid- eller bærbare systemer med integrerte og dedikerte GPU-er.

I tillegg legges egenskapen SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER til for å konfigurere Vulkan-alternativer når GPU-enheten opprettes, og SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN for å kreve maskinvareakselerasjon når nevnte enhet opprettes. På et mer systemnivå er SDL også plassert som X11 verktøysett med introduksjonen av X11TK som sitt eget X11-verktøysett for SDL.

Emscripten og nettleserbruk

SDL 3.4 forbedrer integrasjonen betydelig med Emscripten og utførelse i nettlesereDette er viktig hvis du vil portere spillet eller appen din til nettet uten å skrive det om fra bunnen av. En av de nye funksjonene lar SDL-vinduet "fylle dokumentet" uten nødvendigvis å være fullskjerm.

I en tidligere versjon ble SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT introdusert, og i den endelige utgivelsen er den omorganisert rundt flagget SDL_VINDU_FYLL_DOKUMENT og SDL_SetWindowFillDocument()-funksjonen, sammen med flere relaterte egenskaper. Viktige eksempler inkluderer:

  • SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING og SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID_STRING, for Ã¥ angi og spørre ID-en til lerretet som brukes av SDL.
  • SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN og SDL_PROP_WINDOW_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN, for Ã¥ indikere og sjekke om vinduet skal oppta hele dokumentet.
  • SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING og SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING, for Ã¥ spesifisere og spørre elementet som tastaturinndataene er koblet til.

Disse alternativene gir svært god kontroll over Hvordan integreres SDL med DOM og lerretet?Dette bidrar til å unngå hacking og mellomlag når man jobber med Emscripten. De gjør det også enklere å sikre SDL-kompatibilitet med webrammeverk eller mer komplekse integrasjoner der lerretet bare er én del av siden.

PlayStation 2 og andre mindre vanlige plattformer

Selv om det kan være overraskende, legger SDL 3.4 også vekt på veteranplattformer som PlayStation 2La til hint for å kontrollere skjermparametere: SDL_HINT_PS2_GS_WIDTH, SDL_HINT_PS2_GS_HEIGHT, SDL_HINT_PS2_GS_PROGRESSIVE og SDL_HINT_PS2_GS_MODE, som lar deg justere oppløsning, progressiv modus og generelle innstillinger for grafikksynthesizeren.

Disse detaljene gjør det klart at SDL fortsatt er et svært fleksibelt alternativ for hjemmebryggingsprosjekter, emulering eller forskning på eldre plattformer, bortsett fra det sterke fokuset på moderne PC-er, mobil og nett.

Prosesshåndtering, kameratillatelser og ELF-metadata

På systemnivå legger SDL 3.4 til egenskapen SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRINGDette brukes til å konfigurere arbeidskatalogen for nye prosesser opprettet fra SDL. Dette forenkler kjøring av delprosesser eller eksterne verktøy fra SDL-applikasjonen din uten å måtte få tilgang til operativsystemets API.

Innen fotografi, SDL_GetCameraPermissionState() returnerer nå en verdi av typen SDL_Kameratillatelsestilstand i stedet for et generisk heltall, noe som bedre samkjører semantikk og forenkler tillatelsesadministrasjon på mobile og stasjonære plattformer.

I Unix-systemer inkluderer SDL ELF-notater som beskriver dens ikke-obligatoriske bibliotekfasiliteter I tråd med formatet som er dokumentert på systemd.io/ELF_DLOPEN_METADATA, er ideen at distribusjoner kan analysere disse notatene og automatisk generere pakkeavhengigheter ved hjelp av verktøy som pakkenotater. SDL tilbyr makroen SDL_ELF_NOTE_DLOPEN slik at andre biblioteker og spill kan gjøre det samme, noe som muliggjør mye renere avhengighetshåndtering.

Vindusfremdrift og animerte markører

For å forbedre brukeropplevelsen legger SDL 3.4 til funksjoner som er utviklet for å vis fremgang og berik grensesnittetFor eksempel introduseres SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() og SDL_GetWindowProgressValue() for å vise fremdriftslinjer på vindusikonet i oppgavelinjen i Windows og Linux.

Denne funksjonen lar brukeren se tilstanden til en lang operasjon (nedlastinger, opplastinger, interne bygg osv.) selv om vinduet ikke er i forgrunnen. Det er en ganske elegant måte å gi tilbakemelding på uten å måtte designe ekstra HUD-er.

På den annen side tillater SDL_CreateAnimatedCursor() lage animerte fargemarkørerDette gir et visuelt preg til spill eller verktøy der markøren kommuniserer tilstander (lasting, mulig handling, varsel osv.). Kombinert med det nye hintet SDL_HINT_MOUSE_DPI_SCALE_CURSORS, som nå har standardinnstillingen "0" for å forhindre at markører uventet endrer størrelse i DPI-skalerte miljøer, gir det mer forutsigbar kontroll over pekerens utseende.

Med disse endringene – fra 3D/2D GPU-integrasjon, innebygd PNG-støtte, forbedringer av input og lyd, til fokus på moderne Linux, Emscripten, visionOS og klassiske konsoller – befester SDL 3.4 sin posisjon som en en svært komplett verktøykasse for utvikling på tvers av plattformerminimere eksterne avhengigheter og tilby et solid grunnlag å iterere på uten å bruke hele dagen på feilsøking av problemer som ikke er relatert til din egen kode.