IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Vision tête haute (HUD window)


Sujet :

WinDev

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut Vision tête haute (HUD window)
    La "vision tête haute" consiste à superposer des informations nécessaires au pilotage, à la navigation ou à la réalisation d'une mission, en liaison permanente avec l’environnement extérieur. Le pilote pouvant consulter les informations fournies par ses instruments de bord sans quitter la route (ou le ciel) des yeux.

    Le concept de "vision tête haute" a été popularisé par des films tels que : "Iron Man", "Oblivion", "Avatar", "Minority report", qui l'utilisent largement sur de grands écrans plats transparents, qui préfigurent ceux que nous utiliserons d'ici quelques années.

    Cette technologie qui consiste à superposer des images d'opacité variable pour ne pas masquer l'arrière plan de l'écran, est d'ores et déjà disponible dans la bibliothèque graphique GDImage, qui est à la base de cette démo.

    Le projet à l'origine a été développé en C++, j'ai décidé de le porter en WinDev pour voir si les possibilités graphiques avancées de GDImage pouvaient être utilisées dans cet environnement en conservant des performances acceptables.

    C'est le résultat de ce travail que je vous propose de tester aujourd'hui, mais autant vous le dire tout de suite : le code utilisé n'est pas destiné aux débutants. Car tout repose sur l'utilisation de l'API bas niveau pour limiter au maximum la taille du Framework WinDev utilisé (uniquement "machine virtuelle" et "fonctions standard").

    Dans ces conditions il est même possible de créer de véritables jeux interactifs, qui combinent sons et animations comme le montre le code.


    COMPOSITION D'ECRAN
    La technique qui permet de superposer différents plans transparents les uns au dessus des autres, se nomme "composition", elle repose sur l'utilisation du "Device Window Manager" (DWM) apparu avec le mode AERO de Windows VISTA.
    Au lieu de dessiner l'écran de façon conventionnelle, tous les affichages sont rendus directement en mémoire vidéo (surface DirectDraw) dans leur ordre de superposition (du bas vers le haut) et sont rafraichis en une seule fois avec un FPS de 66 Hz (66 rafraichissements par seconde). GDImage et WinLIFT sont pour le moment les seules bibliothèques graphiques qui tirent réellement parti des possibilités d'affichage offertes par les GPU actuels, à condition de disposer d'une carte graphique qui soit AERO compatible. A noter que sous Windows 8, tous les affichages sont gérés par DWM et qu'il n'est plus possible de le désactiver ( note : le mode "blur" n'est plus disponible en version 8 ).

    CONFIGURATION MATERIEL
    Comme le savent tous les GAMERS, les applications graphiques sont les plus gourmandes en ressources matériel.
    Les animations et les effets sonores utilisés ont été calibrés pour fonctionner sur un ordinateur multi-cœur de type I7 doté d'une bonne carte graphique ATI ou nVIDIA avec 2 GB. Le tout avec un indice de performance Windows proche de 6.

    Les tests ont été réalisés sur un ASUS N76V avec un indice de performance Windows de 5.9, dans ces conditions la charge moyenne du CPU est d'environ 1 à 2%, ceci grâce à l'utilisation du GPU à la place de la mémoire conventionnelle.


    A PROPOS DU CODE
    Toutes les fonctions WinDev susceptibles d'augmenter la taille du Framework ont été systématiquement remplacées par leur équivalent en API bas niveau (cf. collection de procédures globales "ApiSDK").
    Le code principal se trouve dans la collection de procédures "MainSection" et le point d'entrée du programme se trouve dans "MainWindow" qui remplace le code "fenêtre principale" de WinDev.
    Ecrit en code 64-bit, ce projet ne fonctionnera pas sur un ordinateur 32-bit.


    PROGRAMMATION SDK BAS NIVEAU
    Le code utilise la syntaxe du SDK Windows qui est la seule identique quel que soit le langage de développement utilisé, ce qui permet un portage {facile} du code d'un environnement à l'autre. L'usage de fonctions procédurales est systématique pour éviter les niveaux d'encapsulation supplémentaires de la POO et surtout l'adjonction supplémentaire du Framework DotNET.


    INTERFACE UTILISATEUR
    Elle est basée sur la seule utilisation de GDImage et de WinLIFT. Il n'y a aucune fenêtre et aucun champ WinDev.
    Tous les contrôles sont des objets de type "sprite" GDImage, qui se comportent comme les champs boutons dans une fenêtre WinDev.

    Tous les sprites ont des propriétés similaires aux champs WD, en voici quelques unes :
    - Visible/invisible.
    - Ancrage.
    - Actif/inactif.
    - Frame actif.
    - Couleur/transparence.
    - Facteur de zoom.
    - Angle rotation de 0 à 360°.
    - Z-order.
    - Clone (objets raster uniquement).
    - Liés avec (widget).
    - Bulle d'aide.
    etc.

    CAPTURE D'ECRAN




    ARRIERE PLAN
    Plusieurs fonds d'écran sont livrés avec le projet, vous pouvez les changer en cliquant avec le bouton gauche ou droit de la souris sur l'icône "Iron Man" qui se trouve en haut à gauche de la fenêtre.


    MOTIF CIRCULAIRE CENTRAL
    Il représente une pseudo commande qui pivote sur elle-même, lorsqu'on déplace les boules de couleur dans le sens indiqué par les flèches, ont peut restaurer la position initiale en cliquant avec le bouton droit de la souris sur n'importe laquelle de ces boules.




    POLY-LIGNE
    Celle-ci est composée d'une succession de planètes que l'on peut déplacer à la souris par tiré déplacé.


    (Un click sur le bouton "Neutral" restaure la poly-ligne à son état initial)


    FENETRE FURTIVE
    C'est un concept WinDev que j'ai repris pour afficher ou masquer l'heure (il y a un effet sonore différent selon l'ouverture ou la fermeture de la fenêtre furtive).




    ARMEMENTS
    3 types d'armement sont disponibles avec des effets sonores distincts : "Laser", "Roquette", "Torpille".
    En cliquant rapidement sur les différents boutons, on peut provoquer le son d'une bataille sidérale.




    BOUTONS RECTANGULAIRES
    Ceux-ci sont de {véritables boutons} WinLIFT disposés directement sur le champ GDImage, ils sont gérés comme les boutons circulaires de l'armement, à partir du message WM_COMMAND, envoyé à la fonction callback principale "GDImageCallback".




    EFFETS SONORES
    Ceux-ci sont synchronisés avec les différentes animations et sont basés sur des fichiers WAV standards.


    UTILISATION D'UN MANIFEST
    L'utilisation du fichier "manifest.txt", permet de voir les bulles d'aide lorsque le code est compilé, sans ce manifeste elles ne sont visibles qu'en mode GO.


    LIEN DE TELECHARGEMENT DU PROJET WD17
    HUDwindow.zip

    Si vous avez des questions sur l'utilisation de ce code, n'hésitez pas, je ferai de mon mieux pour y répondre.

    ...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Merci pour ce partage !

    Je vais tester .... et faire un retour.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Il n'y a que l'exe dans le fichier .zip. Je pensais que tu partageais le source .... et les astuces de programmation graphiques.

    Dans ce cas, moins intéressant. Je ne teste pas donc.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Le source doit figurer dans le ZIP, si ce n'est pas le cas c'est une erreur.
    Je vérifie immédiatement et au besoin je posterai une mise à jour du ZIP.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut Le code source figure bien dans le ZIP
    Je viens de vérifier, et je confirme que le code source du projet WinDev se trouve bien dans le ZIP.
    à savoir :
    - HUDwindow.wdp (code du projet), c'est par là qu'il faut lancer WinDev.
    - ApiSDK.wdg (procédures globales encapsulant l'API bas niveau)
    - GDImage.wdg (procédures globales de l'API GDImage)
    - WinLIFT.wdg (procédures globales de l'API WinLIFT)
    - MainSection.wdg (c'est là que se trouve le code principal, puisqu'il n'y a pas de fenêtre WinDev)
    - Iron2Man.ico (l'icône du programme)
    - Manifest.txt (le manifest utilisé pour créer l'EXE)

    Pour moi il ne manque rien

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Citation Envoyé par courdi95 Voir le message
    Il n'y a que l'exe dans le fichier .zip. Je pensais que tu partageais le source .... et les astuces de programmation graphiques.

    Dans ce cas, moins intéressant. Je ne teste pas donc.
    Le source est bien présent. Projet en v18 avec les api.

    Je l'ai migré en v19 et tout marche impec. Le fond reste un peu trop opaque pour bien voir ce qui se passe derrière mais l'idée est là et il faut voir pour quelle utilisation (hors ludique) cela pourrait être intéressant !

    Bon courage,

    Nicolas


    PS : une capture d'écran de ce que ça donne
    Nom : ScreenCapture.jpg
Affichages : 1194
Taille : 986,4 Ko

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Vous pouvez changer le fond en cliquant sur l'icône IronMan, qui se trouve en haut à gauche.
    Vous pouvez ajouter vos propres fonds en copiant les images dans le sous-dossier \Background
    Y compris un PNG totalement transparent si vous le souhaitez...

    Cette démo est surtout orientée GAMER, pour montrer que l'on peut créer des jeux en WinDev avec le renfort de l'API bas niveau.

    Mais c'est sûr que çà change des applications de gestion classiques...

  8. #8
    Membre habitué Avatar de logic_man
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 123
    Points : 169
    Points
    169
    Par défaut
    Snif...
    Je tourne sur Win7 32bits...

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/09/2013, 21h43
  2. Enlever le mot "Chapitre x" des en têtes haut de page
    Par BIG123 dans le forum Mise en forme
    Réponses: 4
    Dernier message: 13/06/2013, 14h44
  3. Haute disponibilité sur les plates formes windows et Citrix!
    Par nixmind dans le forum Autres systèmes
    Réponses: 0
    Dernier message: 04/05/2010, 17h01
  4. Comment faire de Windows la tête de liste d'amorçage de LILO ou GRUB
    Par randriano dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 19/09/2009, 14h29
  5. Solution de communication haut niveau Unix/Windows
    Par mi6fred dans le forum Développement
    Réponses: 2
    Dernier message: 05/05/2006, 20h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo