SDL 3.4.0 (Simple DirectMedia Layer) is nu beschikbaar. Deze bibliotheek is ontworpen om de ontwikkeling van games en multimedia-applicaties te vereenvoudigen en biedt functies zoals hardwareversnelde 2D- en 3D-graphics, invoerverwerking, audioweergave en 3D-rendering via OpenGL, OpenGL ES, Metal, Direct3D en Vulkan. De code is geschreven in C en valt onder de Zlib-licentie. Er zijn bindings beschikbaar voor het gebruik van SDL in projecten die in verschillende programmeertalen zijn geschreven.
SDL 3.4.0 is de tweede belangrijke stabiele versie in de SDL 3.x-reeks. De eerste stabiele versie werd aangekondigd als 3.2.x, terwijl 3.3.x als experimenteel werd beschouwd. De belangrijkste wijzigingen in SDL 3.4.0 omvatten verbeterde portabiliteit tussen de 3D GPU API en de 2D rendering API, uitgebreidere ondersteuning voor WebAssamely-compilatie met behulp van de Emscripten-compiler, verbeterde ondersteuning voor grafische tablets en digitale pennen, en native ondersteuning voor het PNG-afbeeldingsformaat.
De nieuwe functies in SDL 3.4.0 omvatten:
- Er is ingebouwde ondersteuning voor PNG-afbeeldingen toegevoegd, met de functies SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() en SDL_SavePNG_IO() beschikbaar voor het werken ermee. De functies SDL_LoadSurface() en SDL_LoadSurface_IO() zijn toegevoegd voor het bepalen van het formaat (PNG of BMP) en het laden van afbeeldingen als oppervlakken.
- De functie SDL_RotateSurface() is toegevoegd om een gedraaide kopie van een oppervlak te maken.
- De functie SDL_CreateAnimatedCursor() is toegevoegd voor het maken van gekleurde geanimeerde cursors, evenals de vlag SDL_HINT_MOUSE_DPI_SCALE_CURSORS voor het automatisch schalen van cursors op basis van het zoomniveau van het scherm.
- De functies SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() en SDL_GetWindowProgressValue() zijn toegevoegd om de voortgang van een bewerking weer te geven in het taakbalkpictogram van de applicatie.
- Eigenschappen toegevoegd voor het gebruik van de GPU API met oudere hardware.
- De eigenschappen SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER en SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA zijn toegevoegd om Vulkan API-functies te configureren en in te schakelen bij het maken van GPU-apparaten.
- De functie SDL_GetGPUDeviceProperties() is toegevoegd om GPU-informatie op te vragen.
- De functies SDL_CreateGPURenderer() en SDL_GetGPURendererDevice() zijn toegevoegd om de GPU in te schakelen voor 2D-rendering, evenals SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() en SDL_DestroyGPURenderState() om fragmentshaders in te schakelen voor 2D-rendering.
- Ondersteuning voor YUV-texturen en HDR is nu beschikbaar voor 2D GPU-rendering. Ondersteuning voor texturen met paletten is toegevoegd met de functies SDL_GetTexturePalette() en SDL_SetTexturePalette(). De functies SDL_GetPixelFormatFromGPUTextureFormat() en SDL_GetGPUTextureFormatFromPixelFormat() zijn toegevoegd voor het converteren van textuurformaten, evenals de parameters SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER en SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER voor het maken van 2D-texturen van GPU-texturen. Om texturen te configureren, zijn de functies SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode() en SDL_SetRenderTextureAddressMode() toegevoegd.
- De parameter SDL_SCALEMODE_PIXELART is toegevoegd om een voor pixelkunst geoptimaliseerd schaalalgoritme te gebruiken.
- De gebeurtenissen 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 en SDL_EVENT_AUDIO_DEVICE_ADDED zijn geïmplementeerd. Deze worden geactiveerd bij het wijzigen van de schermgrenzen, het tonen/verbergen van het virtuele toetsenbord, schermgebaren en het toevoegen van een audioapparaat.
- De functies SDL_PutAudioStreamDataNoCopy() en SDL_PutAudioStreamPlanarData() zijn toegevoegd voor een efficiëntere verwerking van audiostreamen.
- Ondersteuning toegevoegd voor Nintendo Switch 2-gamecontrollers die via USB zijn aangesloten. Uitgebreide ondersteuning voor 8BitDo-, FlyDigi- en Hand Held Legend SInput-controllers.
- Om de prestaties van WebAssambly-applicaties die met de Emscripten-compiler zijn gebouwd te verbeteren, is de functie SDL_SetWindowFillDocument() toegevoegd en zijn de parameters SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING en SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING geïmplementeerd.
- Op het platform Linux Ondersteuning voor atomaire bewerkingen bij gebruik van KMSDRM is geïmplementeerd en wordt geactiveerd via de eigenschap SDL_HINT_KMSDRM_ATOMIC. De parameter SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER is toegevoegd om het wl_output-uitvoerapparaat op te vragen dat is gekoppeld aan het scherm in Wayland-omgevingen.
Bron: opennet.ru
