A fost lansată biblioteca SDL 3.4.0 (Simple DirectMedia Layer). Biblioteca este destinată simplificării scrierii de jocuri și aplicații multimedia, oferind funcționalități precum redarea graficii 2D și 3D accelerată hardware, gestionarea intrărilor, redarea sunetului și output 3D prin OpenGL, OpenGL ES, Metal, Direct3D sau Vulkan. Codul este scris în C și este distribuit sub licența Zlib. Sunt furnizate wrapper-uri pentru utilizarea SDL în proiecte în diverse limbaje de programare.
SDL 3.4.0 este al doilea branch stabil semnificativ în seria SDL 3.x - primul branch stabil a fost declarat seria 3.2.x, iar branch-ul 3.3.x a fost poziționat ca experimental. Principalele modificări în SDL 3.4.0 sunt legate de îmbunătățirea portabilității între API-urile GPU 3D și API-urile pentru redarea 2D, extinderea suportului pentru compilarea în WebAssembly cu ajutorul compilatorului Emscripten, îmbunătățiri în utilizarea tabletelor grafică și stilourilor digitale, precum și adăugarea suportului încorporat pentru formatul de imagine PNG.
Printre noile funcționalități din SDL 3.4.0:
- A fost adăugat suport încorporat pentru imagini în format PNG, pentru care au fost propuse funcțiile SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() și SDL_SavePNG_IO(). Funcțiile SDL_LoadSurface() și SDL_LoadSurface_IO() au fost adăugate pentru a defini formatul (PNG sau BMP) și a încărca imaginile ca suprafețe.
- A fost adăugată funcția SDL_RotateSurface() pentru a crea o copie rotită a suprafeței.
- A fost adăugată funcția SDL_CreateAnimatedCursor() pentru a crea cursorii animați colorati, precum și indiciul SDL_HINT_MOUSE_DPI_SCALE_CURSORS pentru scalarea automată a cursorilor în funcție de nivelul de scalare al ecranului.
- Au fost adăugate funcțiile SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() și SDL_GetWindowProgressValue() pentru a arăta progresul operațiunii în pictograma aplicației din bara de sarcini.
- Au fost adăugate proprietăți pentru utilizarea API GPU pe hardware mai vechi.
- A fost adăugată proprietatea SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER și SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA pentru configurarea și activarea capacităților API Vulkan la crearea dispozitivelor GPU.
- A fost adăugată funcția SDL_GetGPUDeviceProperties() pentru solicitarea informațiilor despre GPU.
- Au fost adăugate funcțiile SDL_CreateGPURenderer() și SDL_GetGPURendererDevice() pentru utilizarea GPU-ului în randarea 2D, precum și SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() și SDL_DestroyGPURenderState() pentru utilizarea shaderelor fragment pentru randarea 2D.
- La randarea 2D cu ajutorul GPU-ului, a fost implementat suportul pentru texturi YUV și HDR. A fost adăugat suport pentru texturi cu palete, pentru care au fost introduse funcțiile SDL_GetTexturePalette() și SDL_SetTexturePalette(). Au fost adăugate funcțiile SDL_GetPixelFormatFromGPUTextureFormat() și SDL_GetGPUTextureFormatFromPixelFormat() pentru conversia formatelor de texturi, precum și parametrii SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER și SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER pentru crearea texturilor 2D din texturi GPU. Au fost introduse funcțiile SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode(), SDL_SetRenderTextureAddressMode() pentru configurarea texturilor.
- A fost adăugat parametrul SDL_SCALEMODE_PIXELART pentru utilizarea unui algoritm de scalare optimizat pentru grafica pixel.
- Au fost implementate evenimentele 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 și SDL_EVENT_AUDIO_DEVICE_ADDED, care sunt declanșate la modificarea limitelor, apariția/extinctarea tastaturii pe ecran, gesturile pe ecran și adăugarea unui dispozitiv audio.
- Au fost adăugate funcțiile SDL_PutAudioStreamDataNoCopy() și SDL_PutAudioStreamPlanarData() pentru o procesare mai eficientă a fluxurilor audio.
- A fost adăugat suport pentru controlerele de joc Nintendo Switch 2, conectate prin USB. Suportul pentru controlerele 8BitDo, FlyDigi și Hand Held Legend SInput a fost extins.
- Pentru a îmbunătăți funcționarea aplicațiilor WebAssembly compilate cu ajutorul compilatorului Emscripten, a fost adăugată funcția SDL_SetWindowFillDocument() și au fost implementate parametrii SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING și SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING.
- Pe platforma Linux, a fost implementat suportul pentru operațiuni atomice în utilizarea KMSDRM, activat prin intermediul proprietății SDL_HINT_KMSDRM_ATOMIC. A fost adăugat parametrul SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER pentru a solicita dispozitivul de ieșire wl_output asociat cu ecranul în medii bazate pe Wayland.
Sursa: opennet.ro
