Predstavljen je izdanak biblioteke SDL 3.4.0 (Simple DirectMedia Layer). Biblioteka je osmišljena za pojednostavljenje pisanja igara i multimedijskih aplikacija te pruža mogućnosti poput hardverski ubrzanog prikaza 2D i 3D grafike, obrade ulaza, reprodukcije zvuka i prikaza 3D putem OpenGL, OpenGL ES, Metal, Direct3D ili Vulkan. Kod je napisan na jeziku C i distribuira se pod Zlib licencom. Pružene su omotnice za korištenje SDL-a u projektima na raznim programskim jezicima.
SDL 3.4.0 je druga značajna stabilna grana u seriji SDL 3.x - prva stabilna grana bila je najavljena kao serija 3.2.x, dok je grana 3.3.x bila pozicionirana kao eksperimentalna. Glavne promjene u SDL 3.4.0 odnose se na poboljšanu prenosivost između API-ja 3D GPU i API-ja za dvodimenzionalno renderiranje, proširenje podrške za kompilaciju u WebAssembly putem Emscripten kompajlera, poboljšanja u radu s grafičkim tabletima i digitalnim olovkama, te dodavanje ugrađene podrške za format slika PNG.
Među novim mogućnostima u SDL 3.4.0:
- Dodana je ugrađena podrška za slike u PNG formatu, za rad s kojima su ponuđene funkcije SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() i SDL_SavePNG_IO(). Za određivanje formata (PNG ili BMP) i učitavanje slika kao površina dodane su funkcije SDL_LoadSurface() i SDL_LoadSurface_IO().
- Dodana je funkcija SDL_RotateSurface() za stvaranje rotirane kopije površine.
- Dodana je funkcija SDL_CreateAnimatedCursor() za stvaranje obojenih animiranih kursorâ, kao i oznaka SDL_HINT_MOUSE_DPI_SCALE_CURSORS za automatsko skaliranje kursorâ u okvirima nivoa skaliranja ekrana.
- Dodane su funkcije SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() i SDL_GetWindowProgressValue() za prikaz napretka operacije u ikoni aplikacije na traci zadataka.
- Dodana su svojstva za korištenje GPU API-ja sa starijom opremom.
- Dodano je svojstvo SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER i SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN za podešavanje i aktiviranje mogućnosti API-ja Vulkan prilikom stvaranja GPU uređaja.
- Dodana je funkcija SDL_GetGPUDeviceProperties() za zahtjev informacija o GPU-u.
- Dodane su funkcije SDL_CreateGPURenderer() i SDL_GetGPURendererDevice() za korištenje GPU-a pri 2D renderiranju, kao i SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() i SDL_DestroyGPURenderState() za uključivanje fragmentnih shadera prilikom 2D renderiranja.
- Pri 2D-izrisu z GPU je bila implementirana podpora za YUV-besedila in HDR. Dodana podpora za besedila s paletami, za katera so bile dodane funkcije SDL_GetTexturePalette() in SDL_SetTexturePalette(). Dodane so funkcije SDL_GetPixelFormatFromGPUTextureFormat() in SDL_GetGPUTextureFormatFromPixelFormat() za pretvorbo formatov besedil, ter parametri SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER in SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER za ustvarjanje 2D-besedil iz GPU-besedil. Za nastavitev besedil so bile dodane funkcije SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode() in SDL_SetRenderTextureAddressMode().
- Dodana je bila možnost SDL_SCALEMODE_PIXELART za uporabo algoritma povečave, optimiziranega za pikselno grafiko.
- Implementirani so dogodki SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED, SDL_EVENT_SCREEN_KEYBOARD_SHOWN, SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE, SDL_EVENT_PINCH_END in SDL_EVENT_AUDIO_DEVICE_ADDED, ki se aktivirajo ob spremembi meja, pojavitvi/skritju zaslonske tipkovnice, zaslonskih gestah in dodajanju zvočne naprave.
- Dodane so funkcije SDL_PutAudioStreamDataNoCopy() in SDL_PutAudioStreamPlanarData() za učinkovitejše obdelovanje zvočnih tokov.
- Dodana je podpora za igralne kontrolerje Nintendo Switch 2, priključene prek USB. Razširjena je podpora za kontrolerje 8BitDo, FlyDigi in Hand Held Legend SInput.
- Za izboljšanje delovanja aplikacij WebAssembly, zbranih z uporabo prevajalnika Emscripten, je bila dodana funkcija SDL_SetWindowFillDocument() in implementirani so parametri SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING in SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING.
- Na platformi Linux je bila implementirana podpora za atomske operacije pri uporabi KMSDRM, aktivirane z lastnostjo SDL_HINT_KMSDRM_ATOMIC. Dodan je bil parameter SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER za zahtevo po napravi za izhod wl_output, povezani z zaslonom, v okolju na osnovi Wayland.
Izvor: opennet.ru
