[Actualité] 2 animations pour Dear ImGui : "Fade In / Fade Out" et "heartBeat effect"
par
, 06/08/2020 à 02h13 (2240 Affichages)
Introduction
Depuis plusieurs années, j'utilise Dear ImGui pour l'interface utilisateur dans mon logiciel miniDart. N.B. : gros changements à venir (non publics pour l'instant).
Après avoir cherché 6 mois (j'ai testé environ 30 GUI avant de choisir Dear ImGui), cette API était finalement la seule à pouvoir fonctionner sous Linux et Windows quasiment de la même façon. La portabilité est directe par cross compilation et ça fonctionne extrêmement bien sous les 2 OS. Au passage un petit mot sur TrollTech, qui se fout de la gueule des petits développeurs avec sa licence Qt à un prix délirant, pour celui qui veut s'affranchir de lier statiquement à 100Mo de blobs pour sortir un binaire, avec des dépendances délirantes et -probablement- inutiles.
Cette API qui n'a besoin que de OpenGL** permet de faire une version de démonstration très rapidement, déjà présentée récemment dans cet article, est franchement géniale pourvu que l'on prenne le temps de lire la très bonne documentation qui se trouve .... dans le code.
Oui, tout se mérite
**(toutefois, une version DirectX ou Vulkan doit pouvoir être écrite en 10 min AMHA )
Dans cet article, je présente rapidement deux animations que j'ai créées récemment, et qui sont utilisables avec cette API géniale :
- La première s'appelle "fade in / fade out". Elle a été inspirée par Sonoro123, développeur et contributeur régulier à Dear ImGui. (voir : cette issue pour l'historique)
- La seconde, "heartbeat effect", est une idée que j'ai eue, juste pour vérifier qu'on pouvait refaire l'effet wow qui existait sous Mac OS X il y a quelques années :-)
Télécharger le code
Les deux fichiers contenant le code font partie de miniDart, mais on peut les associer à tout autre chose, et leur code est sous Licence MIT.
Les deux fichiers contenant les deux fonctionnalités sont placés ici :
Remarque : le namespace md utilisé avec la classe n'est pas essentiel pour vous, et peut aisément être supprimé.
Essayer et jouer avec
Pour tester, j'ai mis un exemple dans le code source de miniDart (pour Linux, mais ça doit fonctionner facilement sous Windows aussi, car le code est totalement neutre (sauf erreur et oubli de ma part).
Normalement, sous Linux, il n'y a rien d'autre à faire que télécharger le code source de Dear ImGui
Ensuite, télécharger les fichiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part git clone https://github.com/ocornut/imgui.git
- Makefile
- imgui_fade_in_out.cpp
- imgui_fade_in_out.hpp
- main.cpp
Vous trouverez tout à cette URL
Placer tous ces fichiers dans imgui/examples/example_sdl_opengl3 en écrasant ceux qui font partie de Dear ImGui.
Et taper "make"
=> lancer le binaire et ça doit fonctionner comme prévu
Important :
Pour revenir en arrière et retrouver le code de base du répertoire exemple avec SDL2 + OpenGL3, il suffit de taper : make clean && git diff . | patch -R (ne pas oublier le point !)
Comme le gif que j'ai essayé d'attacher ne fonctionne pas, l'animation est visible ICI (très incomplet car depuis, la fenêtre disparaît complètement)
Merci d'avance pour tout retour et / ou suggestion d'amélioration !!