SDL, acronyme de Simple DirectMedia Layer, est une bibliothèque cross-plateforme de développement donnant accès aux entrées audio, clavier, souris, joystick, et cartes graphiques via OpenGL et Direct3D. Utilisée dans la conception de jeux vidéo, d’émulateurs, et d’autres programmes informatiques, la SDL est une fantastique bilbiothèque bas niveau (proche de la machine) supporté sur Windows, Mac OS X, Linux, iOS et Android. Ecrite en C et fonctionnant nativement avec le C++, la SDL supporte l’utilisation d’autres langages grâce à de nombreuses liaisons (language bindings) incluant le C#, le Python ou encore le Lua.

Exemple d’un jeu développé avec la SDL : Civilization Call to Power

SDL

La SDL vient de passer en version 2.0.18, qui, avec la correction de nombreux bugs, apporte de nombreux changements :

Général :

  • La documentation du wiki SDL et les en-têtes de développement sont automatiquement synchronisés.
  • Chaque fonction contient des informations sur la version de SDL dans laquelle elle a été introduite.
  • Ajout de l’indice SDL_HINT_APP_NAME pour informer SDL du nom de votre application à divers endroits où il peut apparaître dans les informations système.
  • Ajout de SDL_RenderGeometry() et SDL_RenderGeometryRaw() pour permettre le rendu de formes arbitraires à l’aide de l’API de rendu SDL 2D.
  • Ajout de SDL_SetTextureUserData() et SDL_GetTextureUserData() pour associer des données d’application à une texture SDL.
  • Ajout de SDL_RenderWindowToLogical() et SDL_RenderLogicalToWindow() pour convertir entre les coordonnées de fenêtre et les coordonnées de rendu logique.
  • Ajout de SDL_RenderSetVSync() pour changer si un moteur de rendu présent est synchronisé avec vblank au moment de l’exécution.
  • Ajout de SDL_PremultiplyAlpha() pour prémultiplier l’alpha sur un bloc de SDL_PIXELFORMAT_ARGB8888 pixels.
  • Ajout d’un événement de fenêtre SDL_WINDOWEVENT_DISPLAY_CHANGED qui est envoyé lorsqu’une fenêtre change l’affichage sur lequel elle est centrée.
  • Ajout de SDL_GetWindowICCProfile() pour interroger le profil ICC d’une fenêtre et d’un événement de fenêtre SDL_WINDOWEVENT_ICCPROF_CHANGED qui est envoyé lorsqu’il change.
  • Ajout de l’astuce SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY pour permettre aux fenêtres EGL d’être transparentes au lieu d’être opaques SDL_WaitEvent() a été repensé pour utiliser moins de CPU dans la plupart des cas.
  • Ajout de SDL_SetWindowMouseRect() et SDL_GetWindowMouseRect() pour confiner le curseur de la souris à une zone d’une fenêtre.
  • Vous pouvez maintenant lire le mouvement précis de la molette de la souris à l’aide des champs d’événement « preciseX » et « preciseY ».
  • Ajout de SDL_GameControllerHasRumble() et SDL_GameControllerHasRumbleTriggers() pour demander si un contrôleur de jeu prend en charge le rumble.
  • Ajout de SDL_JoystickHasRumble() et SDL_JoystickHasRumbleTriggers() pour demander si un joystick prend en charge le rumble.
  • L’implémentation Hidapi de SDL est désormais disponible en tant qu’API publique dans SDL_hidapi.h

Les fenêtres :

  • Mouvement relatif de la souris amélioré sur le Bureau à distance Windows.
  • Ajout de l’astuce SDL_HINT_IME_SHOW_UI pour afficher les composants natifs de l’interface utilisateur au lieu de les masquer (désactivé par défaut)

Windows/UWP :

  • WGI est utilisé à la place de XInput pour une meilleure prise en charge du contrôleur dans les applications UWP

Linux :

  • Ajout de l’indice SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME pour définir l’activité affichée par le système lorsque l’économiseur d’écran est désactivé.
  • Ajout de l’astuce SDL_HINT_LINUX_JOYSTICK_CLASSIC pour contrôler si /dev/input/js* ou /dev/input/event* sont utilisés comme joysticks.
  • Ajout de l’indice SDL_HINT_JOYSTICK_DEVICE pour permettre à l’utilisateur de spécifier les appareils qui seront ouverts en plus de la détection normale du joystick.
  • Ajout de SDL_LinuxSetThreadPriorityAndPolicy() pour plus de contrôle sur la priorité d’un thread sous Linux

Android :

  • Ajout de la prise en charge de la sortie et de la capture audio à l’aide de AAudio sur Android 8.1 et versions ultérieures.
  • La prise en charge du Steam Controller est désactivée par défaut et peut être activée en définissant l’indice SDL_HINT_JOYSTICK_HIDAPI_STEAM sur « 1 » avant d’appeler SDL_Init()

Apple Arcade :

  • Ajout de SDL_GameControllerGetAppleSFSymbolsNameForButton() et SDL_GameControllerGetAppleSFSymbolsNameForAxis() pour prendre en charge les titres Apple Arcade

iOS :

  • Ajout d’une documentation indiquant que la clé UIApplicationSupportsIndirectInputEvents doit être définie sur true dans Info.plist de votre application afin d’obtenir de vrais événements de souris Bluetooth.
  • La prise en charge du Steam Controller est désactivée par défaut et peut être activée en définissant l’indice SDL_HINT_JOYSTICK_HIDAPI_STEAM sur « 1 » avant d’appeler SDL_Init()

Gamecodeur possède un parcours de programmation en C en cours de production, vous permettant de mettre en place un environnement de travail pour débuter un projet en C, cer et compiler votre premier programme en C avec la SDL2, et travailler sur les images. Vous pouvez retrouver le parcours de formation à l’adresse suivante : https://www.gamecodeur.fr/liste-ateliers/parcours-programmation-de-jeux-en-c/

Si vous souhaitez apprendre à programmer des jeux vidéo, vous pouvez rejoindre Gamecodeur à l’adresse suivante : https://www.gamecodeur.fr/acces-premium/

Cet article a été posté dans la catégorie and tagged . Voici le permalink : .

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.