Udgivelsen af SDL 3.4.0 (Simple DirectMedia Layer) er blevet præsenteret. Biblioteket er designet til at gøre det lettere at skrive spil og multimedieapplikationer og tilbyder funktioner som hardwareacceleration af 2D- og 3D-grafik, inputhåndtering, lydafspilning og 3D-udgang gennem OpenGL, OpenGL ES, Metal, Direct3D eller Vulkan. Koden er skrevet i C og distribueres under Zlib-licensen. Der tilbydes bindings til at bruge SDL i projekter på forskellige programmeringssprog.
SDL 3.4.0 er den anden betydelige stabile version i serien SDL 3.x - den første stabile version blev erklæret i serien 3.2.x, og serien 3.3.x blev positioneret som eksperimentel. De vigtigste ændringer i SDL 3.4.0 er relateret til forbedret portabilitet mellem 3D GPU API'er og API'er til to-dimensionel rendering, udvidelse af understøttelsen af kompilering til WebAssembly ved hjælp af Emscripten-kompilatoren, forbedret håndtering af grafik tablets og digitale penne, samt indbygget understøttelse af PNG-billedformatet.
Blandt de nye funktioner i SDL 3.4.0:
- Indbygget understøttelse af billeder i PNG-format er tilføjet, med funktioner som SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() og SDL_SavePNG_IO() til rådighed. For at bestemme formatet (PNG eller BMP) og indlæse billeder som overflader, er funktionerne SDL_LoadSurface() og SDL_LoadSurface_IO() blevet tilføjet.
- Funktionen SDL_RotateSurface() er tilføjet for at skabe en roteret kopi af en overflade.
- Funktionen SDL_CreateAnimatedCursor() er tilføjet for at skabe farvede animerede markører, samt indikatoren SDL_HINT_MOUSE_DPI_SCALE_CURSORS for automatisk skalering af markører i forhold til skærmens skaleringsniveau.
- Funktionerne SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() og SDL_GetWindowProgressValue() er tilføjet for at vise fremskridtene i operationen i applikationens ikon på proceslinjen.
- Egenskaber til brug af GPU API med ældre hardware er blevet tilføjet.
- Egenskaben SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER og SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA er blevet tilføjet for at konfigurere og aktivere Vulkan API'ens funktioner ved oprettelsen af GPU-enheder.
- Funktionen SDL_GetGPUDeviceProperties() er blevet tilføjet for at anmode om oplysninger om GPU'en.
- Funktionerne SDL_CreateGPURenderer() og SDL_GetGPURendererDevice() er tilføjet for at aktivere GPU'en ved 2D-rendering, samt SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() og SDL_DestroyGPURenderState() for at aktivere fragment-shadere ved 2D-rendering.
- Ved 2D-visualisering med GPU er der implementeret understøttelse af YUV-teksturer og HDR. Understøttelse af teksturer med paletter er tilføjet, og der er tilføjet funktioner SDL_GetTexturePalette() og SDL_SetTexturePalette() til at arbejde med dem. Funktionerne SDL_GetPixelFormatFromGPUTextureFormat() og SDL_GetGPUTextureFormatFromPixelFormat() er tilføjet til konvertering af teksturformater, samt parametrene SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER og SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER til at oprette 2D-teksturer fra GPU-teksturer. For at konfigurere teksturer er der tilføjet funktioner SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode(), SDL_SetRenderTextureAddressMode().
- Parameter SDL_SCALEMODE_PIXELART er tilføjet for at bruge en algoritme til skalering, der er optimeret til pixelgrafik.
- Hændelserne 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 og SDL_EVENT_AUDIO_DEVICE_ADDED er implementeret, som aktiveres ved ændringer i grænserne, visning/skjulte af skærmtastatur, skærmbevægelser og tilføjelse af lydudstyr.
- Funktionerne SDL_PutAudioStreamDataNoCopy() og SDL_PutAudioStreamPlanarData() er tilføjet for mere effektiv behandling af lydstrømme.
- Understøttelse af Nintendo Switch 2 spillecontrollere, der er tilsluttet via USB, er tilføjet. Understøttelsen af 8BitDo-, FlyDigi- og Hand Held Legend SInput-controllere er blevet udvidet.
- For at forbedre funktionen af WebAssembly-applikationer, der er bygget med Emscripten-kompilatoren, er funktionen SDL_SetWindowFillDocument() tilføjet og parametrene SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING og SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING er implementeret.
- På Linux-platformen er der implementeret understøttelse af atomare operationer ved brug af KMSDRM, aktiveret med ejendom SDL_HINT_KMSDRM_ATOMIC. Parameteren SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER er tilføjet for at anmode om wl_output-udstyret, der er associeret med skærmen, i miljøer baseret på Wayland.
Kilde: opennet.ru
