PC SOFT
DEPOT EN LIGNE
POUR WINDEVWEBDEV ET WINDEV MOBILE

HUD window 64-bit
Publié par Patrice TERRIER
dans la catégorie Divertissement
Nouveautés



Description
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-10, 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.

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.

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" permet de revenir à l'é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.


Note : Ce projet a été testé avec WD17, j'ignore s'il fonctionne avec les versions actuelles de WINDEV.

Le code original écrit en C++ est disponible sur le site www.objreader.com, dans la section "Eye Candies", pour les utilisateurs enregistrés.
Pour vous enregistrer sur le site, envoyez une demande à "objreader@gmail.com"

Illustrations, copies d'écran
none
none
Avis des utilisateurs
(Pour noter la ressource, cliquez sur Ecrire un avis)
BOLLER
Very Good!!!!!!!
A PROPOS
EVALUATION :
51(1)
TELECHARGEMENTS :
69
PUBLIÉE :
18 septembre 2019
VERSION :
CONCERNE :
WINDEV
Version minimale : 01F170078n
TAILLE :
14 Mo
DU MÊME DÉVELOPPEUR