La bibliothèque SDL 3.4.0 (Simple DirectMedia Layer) a été publiée. Cette bibliothèque est conçue pour faciliter l'écriture de jeux et d'applications multimédias, offrant des fonctionnalités telles que l'affichage 2D et 3D accéléré par matériel, la gestion des entrées, la lecture audio et le rendu 3D via OpenGL, OpenGL ES, Metal, Direct3D ou Vulkan. Le code est écrit en C et est distribué sous la licence Zlib. Des liasses sont fournies pour utiliser SDL dans des projets dans divers langages de programmation.
SDL 3.4.0 est la deuxième branche stable majeure de la série SDL 3.x — la première branche stable étant la série 3.2.x, tandis que la branche 3.3.x était considérée comme expérimentale. Les principales modifications dans SDL 3.4.0 concernent l'amélioration de la portabilité entre les API GPU 3D et les API de rendu 2D, l'extension du support de compilation WebAssembly à l'aide du compilateur Emscripten, l'amélioration de la prise en charge des tablettes graphiques et des stylets numériques, ainsi que l'ajout d'un support natif pour le format d'image PNG.
Parmi les nouvelles fonctionnalités de SDL 3.4.0 :
- Un support natif pour les images au format PNG a été ajouté, avec des fonctions SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() et SDL_SavePNG_IO() pour travailler avec. Les fonctions SDL_LoadSurface() et SDL_LoadSurface_IO() ont été ajoutées pour déterminer le format (PNG ou BMP) et charger des images sous forme de surfaces.
- La fonction SDL_RotateSurface() a été ajoutée pour créer une copie tournée d'une surface.
- La fonction SDL_CreateAnimatedCursor() a été ajoutée pour créer des curseurs animés colorés, ainsi qu'un indicateur SDL_HINT_MOUSE_DPI_SCALE_CURSORS pour le redimensionnement automatique des curseurs en fonction du niveau d'échelle de l'écran.
- Les fonctions SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() et SDL_GetWindowProgressValue() ont été ajoutées pour afficher le progrès des opérations dans l'icône de l'application dans la barre des tâches.
- Des propriétés ont été ajoutées pour permettre l'utilisation des API GPU avec du matériel ancien.
- La propriété SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER et SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA ont été ajoutées pour configurer et activer les capacités de l'API Vulkan lors de la création d'appareils GPU.
- La fonction SDL_GetGPUDeviceProperties() a été ajoutée pour demander des informations sur le GPU.
- Les fonctions SDL_CreateGPURenderer() et SDL_GetGPURendererDevice() ont été ajoutées pour activer le GPU lors du rendu 2D, ainsi que SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() et SDL_DestroyGPURenderState() pour activer les shaders de fragment lors du rendu 2D.
- Avec le rendu 2D par le biais du GPU, la prise en charge des textures YUV et HDR a été mise en œuvre. La prise en charge des textures avec palettes a été ajoutée, pour lesquelles les fonctions SDL_GetTexturePalette() et SDL_SetTexturePalette() ont été intégrées. Les fonctions SDL_GetPixelFormatFromGPUTextureFormat() et SDL_GetGPUTextureFormatFromPixelFormat() ont été ajoutées pour la conversion des formats de texture, ainsi que les paramètres SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER et SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER pour créer des textures 2D à partir de textures GPU. Des fonctions ont été ajoutées pour configurer les textures : SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode() et SDL_SetRenderTextureAddressMode().
- Le paramètre SDL_SCALEMODE_PIXELART a été ajouté pour utiliser un algorithme de mise à l'échelle optimisé pour les graphismes pixelisés.
- Des événements tels que 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 et SDL_EVENT_AUDIO_DEVICE_ADDED ont été mis en œuvre, déclenchés lors de changements de limites, d'apparition / d'occultation du clavier à l'écran, de gestes à l'écran et d'ajout d'un appareil audio.
- Les fonctions SDL_PutAudioStreamDataNoCopy() et SDL_PutAudioStreamPlanarData() ont été ajoutées pour un traitement plus efficace des flux audio.
- La prise en charge des contrôleurs de jeux Nintendo Switch 2 connectés via USB a été ajoutée. La prise en charge des contrôleurs 8BitDo, FlyDigi et Hand Held Legend SInput a été étendue.
- Pour améliorer le fonctionnement des applications WebAssembly compilées à l'aide du compilateur Emscripten, la fonction SDL_SetWindowFillDocument() a été ajoutée, et les paramètres SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING et SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING ont été mis en œuvre.
- Sur la plateforme Linux, la prise en charge des opérations atomiques lors de l'utilisation de KMSDRM a été mise en œuvre, activée par l'intermédiaire de la propriété SDL_HINT_KMSDRM_ATOMIC. Le paramètre SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER a été ajouté pour demander le périphérique de sortie wl_output associé à l'écran dans des environnements basés sur Wayland.
Source : opennet.ru
