
Kung nagtatrabaho ka sa pagbuo ng video game o mga cross-platform multimedia application, malamang narinig mo na ang tungkol sa SDL. ang pagdating de SDL 3.4Malaki ang naging pagsulong ng library pagdating sa mga kakayahan sa graphics, suporta sa platform, at mga tool para sa pagpapabuti ng karanasan ng user, sa desktop, web, at mga mobile device. Hindi ito maliit na update: saklaw nito ang lahat mula sa 2D rendering engine at 3D GPU API hanggang sa audio handling, mga driver, pen input, mga modernong Linux system, at marami pang iba.
Bagama't patuloy na umuunlad ang SDL 3, ang sangay Ang 3.4 ay nagpapakita ng sarili bilang isang napaka-matibay na bersyon Dinisenyo upang tulungan ang mga bago at patuloy na proyekto na samantalahin ang mga pagpapabuti sa pagganap, mga bagong API, at mas mahusay na integrasyon sa mga kapaligiran tulad ng Emscripten, Wayland, Vision Pro, o kahit PlayStation 2 sa mga partikular na konteksto. Tingnan natin nang mas malapitan kung ano ang bago sa SDL 3.4, kung bakit ito mahalaga para sa iyong susunod na proyekto, at kung anong mga teknikal na detalye ang dapat mong tandaan kung gusto mong masulit ito.
Pinakamahahalagang pangkalahatang bagong tampok ng SDL 3.4
Ang pangunahing linya ng trabaho ng SDL 3.4 ay nakatuon sa Pagbutihin ang interoperability sa pagitan ng 3D at 2DIto ay mahalaga para sa mga game engine at application na pinagsasama ang 2D interface at 3D content. Hanggang ngayon, ang pagsasama-sama ng parehong layer ay maaaring mangailangan ng mas maraming trabaho mula sa developer; ang bersyong ito ay nagpapakilala ng mga bagong utility at property na nagpapadali sa prosesong ito.
Bukod sa mga graphics, kasama sa update ang katutubong suporta para sa mga larawang PNGMay mga kapansin-pansing pagpapabuti sa input system (mouse, stylus, gestures, on-screen keyboard) at maraming partikular na pagbabago para sa Windows, macOS, Linux, Emscripten, iOS, visionOS, at iba pang hindi gaanong karaniwang mga platform. Pinino rin ang integrasyon sa ecosystem ng Steam at ang runtime nito, na mahalaga para sa Linux gaming at cross-platform development na naglalayong ipamahagi ang Steam.
Interoperability sa pagitan ng 3D GPU API at 2D rendering
Isa sa mga kalakasan ng SDL 3.4 ay ang pagpapalakas nito integrasyon sa pagitan ng 3D at 2DAng library ay nagpapakilala ng mga bagong function para sa paglikha ng mga GPU-based 2D renderer at para sa pagpapalitan ng impormasyon sa pagitan ng mga texture ng GPU at mga format ng pixel na hinahawakan ng SDL.
- Dagdag pa nito SDL_CreateGPURenderer() para lumikha ng 2D renderer na gumagamit ng pinagbabatayang GPU API.
- may SDL_GetGPURendererDevice() Maaari mong kunin ang GPU device na nauugnay sa renderer na iyon.
- Sumasali sila SDL_CreateGPURenderState(), SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() at SDL_DestroyGPURenderState() para gumana sa mga fragment shader sa loob ng 2D GPU rendering.
- Ngayon ay tinanggap na sila Mga tekstura ng YUV at mga espasyo ng kulay ng HDR sa GPU-based 2D renderer, na lalong kawili-wili para sa mga high-end na video at nilalaman.
Isinasama rin nito ang mga katangian tulad ng SDL_GetGPUDeviceProperties()Ibinabalik nito ang mga katangian ng GPU device, kabilang ang pangalan ng device, pangalan at bersyon ng driver, at iba pang impormasyong may kaugnayan sa compatibility o mga desisyon sa diagnostic. Bukod pa rito, pinapadali ng `SDL_GetPixelFormatFromGPUTextureFormat()` at `SDL_GetGPUTextureFormatFromPixelFormat()` ang conversion sa pagitan ng mga format ng texture ng GPU at mga format ng SDL pixel.
Kasabay nito, kasama ang ari-arian SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER Para lumikha ng 2D texture mula sa isang umiiral na GPU texture, at SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER para makuha ang GPU texture na nauugnay sa isang 2D texture kapag ginagamit ang 2D GPU renderer. Ang pamamaraang ito ay makabuluhang nakakabawas ng friction kapag hinahalo ang content na nabuo sa GPU API sa klasikong SDL 2D pipeline.
Mga pagpapabuti sa 2D rendering at texture handling
Ang SDL 3.4 ay higit pa sa simpleng interoperability at nagdaragdag ng mga partikular na function para sa pinuhin ang kalidad at kontrol ng 2D renderingHalimbawa, ipinakilala ang SDL_RenderTexture9GridTiled(), na nagpapahintulot sa 9-grid rendering na may mga texture sa "tile" mode sa halip na iunat ang mga ito, na iniiwasan ang mga deformation sa mga elemento ng interface o frame.
Para pamahalaan kung paano i-scale ang mga texture, idinaragdag ang mga sumusunod SDL_GetDefaultTextureScaleMode() at SDL_SetDefaultTextureScaleMode(), na nagbibigay-daan sa pagtatakda ng default na scaling mode para sa mga bagong texture. Kaugnay nito ang SDL_GetRenderTextureAddressMode() at SDL_SetRenderTextureAddressMode(), kasama ang constant na SDL_TEXTURE_ADDRESS_WRAP, na nagbibigay ng suporta sa pambalot ng tekstura kapag ipinahiwatig ng renderer na sinusuportahan nito ang wrapping (SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN).
Isang napaka-interesante at bagong tampok para sa mga larong may retro aesthetic ay SDL_SCALEMODE_PIXELART, isang scaling algorithm na idinisenyo para sa pixel art na umiiwas sa klasikong pag-blur ng iba pang mga filtering mode, pinapanatili ang mga tinukoy na gilid kahit na lubos na pinalalaki ang imahe.
Mayroon ding posibilidad na makipagtulungan sa mga paleta ng teksturaAng SDL_SetTexturePalette() at SDL_GetTexturePalette() ay nagbibigay-daan sa iyong magtalaga at mag-query ng mga palette sa mga texture, na kapaki-pakinabang kung nililikha mo muli ang mga lumang istilo ng grapiko o nais mong i-optimize ang ilang daloy ng memorya at bandwidth.
Sa usapin ng mga ibabaw, isinasama ng SDL 3.4 ang SDL_IkotIbabaw() Para makagawa ng mga pinaikot na kopya ng isang surface, ang SDL_FLIP_HORIZONTAL_AND_VERTICAL ay idinaragdag para sabay na i-flip ang mga surface sa magkabilang axes. Bukod pa rito, ang SDL_PROP_SURFACE_ROTATION_NUMBER property (na kalaunan ay pinalitan ng SDL_PROP_SURFACE_ROTATION_FLOAT sa mga final release candidate changes) ay ginagamit para tukuyin ang anggulong kinakailangan para maipakita nang tama ang mga imahe ng camera.
Suporta ng katutubong PNG at paglo-load sa ibabaw
Isa sa mga pinakakanais-nais na pagpapabuti sa mga tuntunin ng praktikalidad ay ang SDL 3.4 ay may kasamang katutubong suporta para sa PNG...nang hindi umaasa sa mga panlabas na library sa maraming pagkakataon. Pinapasimple nito ang maraming maliliit na proyekto at mga prototipo.
- SDL_LoadPNG() at SDL_LoadPNG_IO() ay nagbibigay-daan sa paglo-load ng mga PNG na imahe nang direkta bilang mga surface.
- SDL_SavePNG() at SDL_SavePNG_IO() ay ginagamit upang i-save ang mga surface sa PNG format.
- may SDL_LoadSurface() Awtomatikong tinutukoy ng SDL_LoadSurface_IO() kung ang file ay BMP o PNG at nilo-load ito sa isang surface nang hindi mo na kailangang mag-alala tungkol sa format.
Ang pinagsamang suportang ito ay isinasalin sa mas kaunting mga dependency at mga panlabas na configurationIto ay lalong kapaki-pakinabang kapag nag-compile para sa maraming platform o gumagamit ng SDL sa loob ng mga environment tulad ng Emscripten, kung saan ang pagbabawas ng bilang ng mga helper library ay gumagawa ng pagkakaiba sa parehong laki at complexity ng binary.
Input: mouse, stylus, mga galaw, at on-screen keyboard
Malaki ang naitutulong ng SDL 3.4 sa lahat ng bagay na may kaugnayan sa mga advanced na input deviceSa domain ng mouse, ipinakilala ang SDL_SetRelativeMouseTransform(), na nagbibigay-daan sa paglalapat ng custom na transformation sa relatibong input ng mouse, na kapaki-pakinabang para sa mga scaling technique, axis inversion, o mga espesyal na mapping.
Tungkol sa mga lapis at stylus, lumalabas na SDL_GetPenDeviceType()na nagbibigay-daan sa iyong matukoy kung ang panulat ay direktang gumagana sa screen o sa isang hiwalay na touchpad, isang napaka-kapaki-pakinabang na detalye para sa pag-aangkop ng UX ayon sa uri ng device.
Sa mga device na may virtual keyboard, nagdadagdag ang SDL ng mga event tulad ng SDL_EVENT_SCREEN_KEYBOARD_SHOWN at SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, na nag-uulat kung kailan ipinapakita o nakatago ang on-screen keyboard. Nagbibigay ito sa iyo ng kalayaan upang ayusin ang interface, ilipat ang mga elemento, o pigilan ang mga field ng teksto na matakpan.
Ang sistema ng kilos ay pinalalawak din kasabay ng mga kaganapan SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE at SDL_EVENT_PINCH_ENDna nakakakita ng mga kilos na parang kinurot para sa pag-zoom at mga katulad na aksyon. Bukod pa rito, sa kapaligirang Wayland, itinatama ang suporta para sa higit sa limang butones ng mouse, at ipinakilala ang katumpakan ng pag-scroll sa X11, na nagpapabuti sa kinis ng pinong pag-scroll.
Panghuli, isinasama ng SDL 3.4 ang SDL_GetEventDescription(), isang function upang makakuha ng paglalarawan sa Ingles ng isang kaganapan, na nilayon para sa pag-log at pag-debug, isang bagay na lubhang kapaki-pakinabang kapag sinusubaybayan mo ang mga bihirang pag-uugali ng pag-input sa maraming platform.
Audio: mas flexible na mga daloy ng trabaho at walang muling pagproseso ng sistema
Ang audio subsystem ay nakakatanggap din ng makatarungang bahagi ng mga pagpapabuti, na may malaking pokus sa Mahusay na pagproseso at pagkontrol sa pipelineBilang panimula, ang SDL_EVENT_AUDIO_DEVICE_ADDED ay ipinapadala na rin ngayon habang initialization para sa bawat na-detect na audio device, na ginagawang mas madali ang pagtuklas at paglilista ng mga device nang hindi na kailangang maghintay para sa mga dynamic na kaganapan.
Dalawang bagong tampok, SDL_PutAudioStreamDataNoCopy() at SDL_PutAudioStreamPlanarData(), ay nagbibigay ng higit pang mga opsyon kapag nagtatrabaho sa mga audio stream: ang una ay umiiwas sa mga hindi kinakailangang kopya sa ilang mga kaso, at ang pangalawa ay nagpapahintulot sa pagpasok ng data sa planar format sa halip na interleaved, mainam para sa mga advanced na stream o integrasyon sa mga high-level audio processing library.
Bukod pa rito, ang pahiwatig na SDL_HINT_AUDIO_DEVICE_RAW_STREAM ang pangunahing tampok: ipinapahiwatig ng pahiwatig na ito na ang operating system Hindi ka dapat maglapat ng karagdagang pagproseso sa audio. (tulad ng pagkansela ng ingay). Mahalaga ito kung ang iyong aplikasyon o laro ay humahawak na sa pagproseso at ayaw mong makagambala ang OS at mabago ang resulta. Ipinakilala rin ang SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN, na nagpapahintulot sa ilang stream na mabuhay nang lampas sa lifecycle ng audio subsystem, isang bagay na kapaki-pakinabang sa mas kumplikadong mga arkitektura.
Mga HID Controller at Device
Malaki ang naitutulong ng SDL 3.4 sa suporta para sa mga controller at HID device, na nagpapalawak sa hanay ng hardware na gumagana agad nang walang panlabas na configuration. Sa partikular, dinadagdagan nito Pinahusay na suporta para sa mga controller ng 8BitDoFlyDigi at Hand Held Legend SINput, na ginagawang mas madali para sa maraming third-party gamepad na gumana nang mas pare-pareho.
Incorporated din ito Naka-wire na Nintendo Switch 2 controller stand Kapag ang SDL ay kino-compile gamit ang libusb, ito ay interesante para sa mga user na mas gusto ang direktang koneksyon kaysa sa wireless mode. Sa antas ng HID API, ang SDL_hid_get_properties() ay tila nag-uugnay ng mga SDL properties sa mga HID device, at ang SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER property ay nagbibigay-daan sa pagkuha ng libusb handle na nauugnay sa isang SDL_hid_device kapag ito ay binuksan gamit ang libusb.
Ang mga pagpapabuting ito ay karagdagan pa sa katotohanang kasama sa SDL 3.4 ang suporta para sa bagong Steam Controller sa loob ng entry ecosystem nito, at akmang-akma iyon sa papel nito sa loob ng Steam runtime at sa pokus sa paglalaro sa Linux at iba pang mga platform.
Mga kaganapan, sistema at pangkalahatang mga kagamitan
Higit pa sa mga aspeto ng grapiko at input, ipinakikilala ng SDL 3.4 ang isang serye ng mga pagbabago sa sistema ng kaganapan at mga pangkalahatang kagamitan na dapat malaman. Halimbawa, SDL_EVENT_WINDOW_EXPOSED Pinupuno nito ngayon ang field na data1 ng true kapag ipinadala habang may live window resize, na nagbibigay ng karagdagang konteksto.
Dagdag pa nito SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGEDNagti-trigger ang event na ito kapag nagbabago ang magagamit na mga hangganan ng desktop (halimbawa, kapag naglilipat ng mga taskbar o panel). Isinasama rin nito ang SDL_EVENT_SCREEN_KEYBOARD_SHOWN/SDL_EVENT_SCREEN_KEYBOARD_HIDDEN at ang mga nabanggit na pinch event, kaya nagbibigay ng mas komprehensibong ecosystem ng event para sa mga dynamic na senaryo ng UI.
Sa panig ng kita, SDL_HINT_MAIN_CALLBACK_RATE maaari na ngayong itakda bilang isang floating-point value, na nagbibigay ng mas katumpakan; SDL_AddAtomicU32() Nagdaragdag ito ng suporta para sa mga atomic addition sa 32-bit unsigned integers; at SDL_GetSystemPageSize() Ibinabalik ang laki ng pahina ng sistema, na kapaki-pakinabang para sa mga gawain sa mababang antas ng memorya.
Kasama din SDL_ALIGNED()Ipinapahiwatig ng macro na ito na ang ilang datos ay dapat magkaroon ng isang partikular na pagkakahanay, na lubhang mahalaga para sa mga pag-optimize ng pagganap at paggamit ng mga tagubilin ng SIMD. Samantala, ang SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER ay nagbibigay-daan sa iyong magtakda ng isang pasadyang function ng paglabas para sa memorya na ginagamit ng SDL_IOFromMem() at SDL_IOFromConstMem(), na nagbibigay sa iyo ng higit na kontrol kapag isinasama ang SDL sa iyong sariling mga allocator.
Isa pang kawili-wiling pagpapabuti ay ang suporta para sa detalyadong output ng log Kapag ang DEBUG_INVOCATION environment variable ay nakatakda sa "1", inilaan para sa malalim na pag-debug ng initialization at behavior ng library sa mga kumplikadong konteksto.
Mga partikular na pagpapabuti sa Windows
Sa Windows, ang SDL 3.4 ay may kasamang mahahalagang pagbabago na nakakaapekto sa audio, video, at sa input system. Isa sa mga interesanteng punto ay ang tampok na hint. SDL_HINT_RENDER_DIRECT3D11_WARPNagbibigay-daan ito sa iyo na i-activate ang WARP (software rasterizer ng D3D11). Kapaki-pakinabang ito sa mga makinang walang compatible na GPU o sa mga virtualized na kapaligiran kung saan walang direktang acceleration ngunit gusto mo pa ring gamitin ang API.
Sinasamantala ng drayber ng WASAPI ang SDL_HINT_AUDIO_DEVICE_STREAM_ROLE Upang isaayos ang kategorya ng audio stream, isang mahalagang integrasyon para sa pag-uugaling naaayon sa sistema (hal., audio ng laro, mga komunikasyon, atbp.). Umaasa rin ito sa SDL_HINT_AUDIO_DEVICE_RAW_STREAM upang ipahiwatig kung dapat bang maglapat ng karagdagang pagproseso ang driver.
Ang pahiwatig ay ipinapasok sa input side ng keyboard. SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYSNagbibigay-daan ito sa iyo na huwag paganahin ang ilang mga shortcut ng system kapag gumagamit ng raw input, na napaka-praktikal para sa mga larong kailangang kumuha ng mga kumbinasyon ng key nang walang panghihimasok ng system. At sa antas ng GameInput API, SDL_HINT_WINDOWS_GAMEINPUT Ito ay hindi pinagana bilang default, na nagbabawas sa mga potensyal na conflict sa ilang mga kapaligiran hanggang sa ito ay tahasang na-configure.
Ito ay idinagdag din SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER Para makuha ang HMONITOR na nauugnay sa isang screen, isang bagay na lubhang kapaki-pakinabang kung hinahalo mo ang SDL sa klasikong Win32 code at kailangang i-coordinate ang mga windows o monitor.
macOS, iOS, at visionOS
Sa macOS, ang SDL 3.4 ay may kasamang isang napaka-praktikal na pahiwatig: SDL_HINT_MAC_PRESS_AND_HOLDKinokontrol ng setting na ito kung ang pagpindot nang matagal sa isang key ay uulit sa keystroke o magbubukas sa accent menu. Nagbibigay-daan ito sa iyong isaayos ang gawi ng keyboard para sa mga laro at application na nangangailangan ng mabilis na pag-uulit ng key sa halip na ang karaniwang macOS accent menu.
Sa iOS, SDL na ngayon sumusuporta sa mga eksena sa bintanaNireresolba nito ang babalang "CLIENT OF UIKIT REQUIRES UPDATE" at iniaayon ang library sa mga modernong kasanayan sa UIKit. Ang SDL_PROP_WINDOW_CREATE_WINDOWSCENE_POINTER property ay ipinakilala upang tukuyin ang window scene kapag lumilikha ng SDL window, na tumutulong upang maayos na maisama ang app sa iOS windowing system.
Sa visionOS at mga device tulad ng Apple Vision Pro, inaayos ng SDL 3.4 ang gawi ng window at mga refresh rate. Ang default na refresh rate ay tumataas sa 90 HzNagbibigay ang SDL_SetWindowSize() ng mas maayos na karanasan, at epektibong binabago ng SDL_SetWindowSize() ang laki ng window sa mga headset ng Vision Pro, na nagbibigay ng higit na kontrol sa layout sa mga mixed reality environment.
Linux, Wayland, KMS/DRM at Vulkan
Sa mundo ng Linux, ang SDL 3.4 ay may kasamang maraming bagong tampok. Una sa lahat, dinadagdagan nito suportang atomiko para sa KMSDRMPinapabuti nito ang katatagan at synchronization sa pamamagitan ng direktang pagtatrabaho sa graphics subsystem ng kernel. Kaugnay nito, ang hint na SDL_HINT_KMSDRM_ATOMIC ay nagbibigay-daan sa kontrol kung gagamitin o hindi ng KMSDRM ang atomic functionality na ito.
Para sa Wayland, ang mga sumusunod ay isinama: SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTERAng feature na ito ay nagbibigay-daan sa iyong makuha ang wl_output na nauugnay sa isang screen, na nagpapadali sa malalim na integrasyon sa compositor. Bukod pa rito, naayos na ang mga isyu sa mga mouse na may higit sa limang button, at pinahusay ang precision scrolling sa ilalim ng X11, na nagbibigay ng mas mahusay na pakiramdam ng kontrol sa mga application na lubos na umaasa sa scrolling.
Tungkol sa Vulkan, ipinakikilala ng SDL 3.4 pag-render ng batch at iba pang mga pagpapabuti para sa mga API tulad ng Vulkan, na nagbabawas ng mga paulit-ulit na tawag sa draw at nagpapabuti sa pangkalahatang pagganap. Ginagawa rin ang trabaho sa lohika na nakakakita ng Mas malakas na Vulkan GPU Sa mga system na may maraming GPU, nakakatulong na awtomatikong piliin ang pinakaangkop na device, lalo na sa mga hybrid o laptop system na may integrated at dedicated GPUs.
Bukod pa rito, ang SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER property ay idinaragdag upang i-configure ang mga opsyon ng Vulkan kapag ginagawa ang GPU device, at ang SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN upang mangailangan ng hardware acceleration kapag ginagawa ang nasabing device. Sa mas antas ng system, ang SDL ay nakaposisyon din bilang Kagamitan sa X11 sa pagpapakilala ng X11TK bilang sarili nitong X11 toolkit para sa SDL.
Paggamit ng Emscripten at browser
Malaki ang naitutulong ng SDL 3.4 sa integrasyon nito sa Emscripten at pagpapatupad sa mga web browserMahalaga ito kung gusto mong i-port ang iyong laro o app sa web nang hindi ito muling isinusulat mula sa simula. Isa sa mga bagong feature ay nagbibigay-daan sa SDL window na "punan ang dokumento" nang hindi kinakailangang maging fullscreen.
Sa nakaraang bersyon, ipinakilala ang SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT, at sa huling bersyon ay muling inayos ito kaugnay ng bandila SDL_WINDOW_FILL_DOCUMENT at ang SDL_SetWindowFillDocument() function, kasama ang ilang kaugnay na properties. Kabilang sa mga kapansin-pansing halimbawa ang:
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING at SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID_STRING, para itakda at i-query ang ID ng canvas na ginagamit ng SDL.
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN at SDL_PROP_WINDOW_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN, upang ipahiwatig at suriin kung dapat sakupin ng window ang buong dokumento.
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING at SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING, upang tukuyin at i-query ang elemento kung saan naka-link ang input ng keyboard.
Ang mga opsyong ito ay nag-aalok ng napakagandang kontrol sa Paano nagsasama ang SDL sa DOM at sa canvas?Nakakatulong ito upang maiwasan ang mga hack at intermediate layer kapag gumagamit ng Emscripten. Pinapadali rin nito ang pagtiyak ng pagiging tugma ng SDL sa mga web framework o mas kumplikadong integrasyon kung saan ang canvas ay isang bahagi lamang ng pahina.
PlayStation 2 at iba pang hindi gaanong karaniwang mga platform
Bagama't maaaring nakakagulat, binibigyang-pansin din ng SDL 3.4 ang mga beterano na plataporma tulad ng PlayStation 2Nagdagdag ng mga pahiwatig para kontrolin ang mga parameter ng display: SDL_HINT_PS2_GS_WIDTH, SDL_HINT_PS2_GS_HEIGHT, SDL_HINT_PS2_GS_PROGRESSIVE at SDL_HINT_PS2_GS_MODE, na nagbibigay-daan sa iyong isaayos ang resolution, progressive mode at mga pangkalahatang setting ng Graphics Synthesizer.
Nililinaw ng mga detalyeng ito na ang SDL ay nananatiling isang napaka-flexible na opsyon para sa mga proyekto sa homebrew, emulasyon, o pananaliksik sa mga mas lumang platform, bukod pa sa malakas na pokus nito sa mga modernong PC, mobile at web.
Pamamahala ng proseso, mga pahintulot sa camera, at metadata ng ELF
Sa antas ng sistema, idinaragdag ng SDL 3.4 ang ari-arian SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRINGGinagamit ito upang i-configure ang working directory ng mga bagong prosesong nilikha mula sa SDL. Pinapasimple nito ang pagpapatakbo ng mga subprocess o mga panlabas na tool mula sa iyong SDL application nang hindi kinakailangang i-access ang API ng operating system.
Sa larangan ng potograpiya, SDL_GetCameraPermissionState() ngayon ay nagbabalik ng halaga ng uri Estado ng Pahintulot ng SDL_Camera sa halip na isang generic na integer, mas mahusay na pag-aayos ng semantika at pagpapadali sa pamamahala ng pahintulot sa mga mobile at desktop platform.
Sa mga sistemang Unix, kasama sa SDL ang mga tala ng ELF na naglalarawan nito mga pasilidad ng aklatan na hindi sapilitan Kasunod ng format na nakadokumento sa systemd.io/ELF_DLOPEN_METADATA, ang ideya ay maaaring suriin ng mga distribusyon ang mga talang ito at awtomatikong makabuo ng mga packaging dependency gamit ang mga tool tulad ng package-notes. Nagbibigay ang SDL ng SDL_ELF_NOTE_DLOPEN macro upang magawa rin ito ng iba pang mga library at laro, na nagpapadali sa mas malinis na pamamahala ng dependency.
Pag-usad ng window at mga animated na cursor
Para mapabuti ang karanasan ng gumagamit, nagdadagdag ang SDL 3.4 ng mga tampok na idinisenyo para ipakita ang progreso at pagyamanin ang interfaceHalimbawa, ang SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState(), at SDL_GetWindowProgressValue() ay ipinakikilala upang ipakita ang mga progress bar sa icon ng window sa Windows at Linux taskbar.
Ang tampok na ito ay nagbibigay-daan sa gumagamit na makita ang estado ng isang mahabang operasyon (mga pag-download, pag-upload, mga internal build, atbp.) kahit na wala sa foreground ang window. Ito ay isang medyo eleganteng paraan upang magbigay ng feedback nang hindi kinakailangang magdisenyo ng mga karagdagang HUD.
Sa kabilang banda, pinapayagan ng SDL_CreateAnimatedCursor() lumikha ng mga animated na cursor na may kulayNagdaragdag ito ng kaunting biswal na pagpapakintab sa mga laro o tool kung saan ipinapaalam ng cursor ang mga estado (naglo-load, posibleng aksyon, alerto, atbp.). Kasama ang bagong hint na SDL_HINT_MOUSE_DPI_SCALE_CURSORS, na ngayon ay naka-default sa "0" upang maiwasan ang hindi inaasahang pagbabago ng laki ng mga cursor sa mga kapaligirang may DPI-scale, nagbibigay ito ng mas mahuhulaang kontrol sa hitsura ng pointer.
Gamit ang mga pagbabagong ito—mula sa integrasyon ng 3D/2D GPU, suporta sa katutubong PNG, mga pagpapabuti sa input at audio, hanggang sa atensyon sa modernong Linux, Emscripten, visionOS, at mga klasikong console—pinatitibay ng SDL 3.4 ang posisyon nito bilang isang isang kumpletong toolbox para sa cross-platform developmentbinabawasan ang mga panlabas na dependency at nag-aalok ng matibay na pundasyon kung saan maaaring ulitin ang mga ito nang hindi ginugugol ang buong araw sa pag-debug ng mga problema na walang kaugnayan sa sarili mong code.
