DÉFORMES TES FENÊTRES COMME SOUS VISTA!

Signaler
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
-
Domohina
Messages postés
1
Date d'inscription
lundi 6 février 2012
Statut
Membre
Dernière intervention
31 mars 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39215-deformes-tes-fenetres-comme-sous-vista

cs_Forman
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
Si quelqu'un a l'occasion d'essayer le programme sous Win2000, Win95 ou Win98, merci de me dire si ça fonctionne ou non.
Rudy3212
Messages postés
156
Date d'inscription
vendredi 20 août 2004
Statut
Membre
Dernière intervention
31 décembre 2007

C'est cool cette source merci,

Par contre j'ai pas win98, ni 2000 et encore moins 95 lol.
Désolé allez 10/10 :)
JulioDelphi
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
whoua je suis soufflé =) 10/10
qoprek
Messages postés
11
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
26 mars 2007

Bonjour,

Sur mon poste les animations style Vista logicelles ne font rien (juste la tempo qui dure et hop la fenêtre affichée normalement) et les animations style Vista matérielles provoquent une exception générée par Assert(FPBufferARB<>0,SysErrorMessage(GetLastError));
dans TPBufferCanvas.CreateContextCreateContext.

Pour l'exception je pense que c'est tout simplement que mon sous-système vidéo ne gère pas l'accéleration matérielle mais peut-être remonter une exception trappée en indiquant que cette option n'est pas disponible. Peut être même une fonction de tests des animations disponibles pourraient être intégrées a l'objet et mettrait a jour la liste des animations disponibles.

Quant a l'animation style Vista logicielle, je ne sais pas pourquoi je n'ai rien.

Cdlt.
Benoit

Informations:
Report Date: 08/22/2006
Report Time[hr:mm:ss]: 13:45:49
Driver Version: 6.14.10.4410
Operating System: Windows XP* Professional, Service Pack 2 (5.1.2600)
Default Language: French
DirectX* Version: 9.0
Physical Memory: 1015 MB
Minimum Graphics Memory: 8 MB
Maximum Graphics Memory: 128 MB
Graphics Memory in Use: 16 MB
Processor: x86 family 6 Model 13 Stepping 8
Processor Speed: 1994 MHZ
Vendor ID: 8086
Device ID: 2592
Device Revision: 03
* Accelerator Information *
Accelerator in Use: Mobile Intel(R) 915GM/GMS,910GML Express Chipset Family
Video BIOS: 3412
Current Graphics Mode: 1280 x 1024 True Color (60 Hz)
* Devices Connected to the Graphics Accelerator *
Active Monitors: 1
Active Notebook Displays: 1
* Monitor *
Monitor Name: Dell 1704FPT (Analog)
Display Type: Analog
Gamma Value: 2,20
DDC2 Protocol: Supported
Maximum Image Size: Horizontal: 13,3 inches
Vertical: 10,6 inches
Monitor Supported Modes:
640 x 480 (60 Hz)
640 x 480 (75 Hz)
720 x 400 (70 Hz)
800 x 600 (60 Hz)
800 x 600 (75 Hz)
1024 x 768 (60 Hz)
1024 x 768 (75 Hz)
1152 x 864 (75 Hz)
1280 x 1024 (60 Hz)
1280 x 1024 (75 Hz)
Display Power Management Support:
Standby Mode: Supported
Suspend Mode: Supported
Active Off Mode: Supported
* Notebook *
Monitor Name: Écran Plug-and-Play
Display Type: Digital
Gamma Value: 3,54
DDC2 Protocol: Supported
Maximum Image Size: Horizontal: Not Available
Vertical: Not Available
Monitor Supported Modes:
640 x 480 (60 Hz)
800 x 600 (60 Hz)
1024 x 768 (60 Hz)
1400 x 1050 (50 Hz)
1400 x 1050 (60 Hz)
Display Power Management Support:
Standby Mode: Supported
Suspend Mode: Supported
Active Off Mode: Supported
* SDVO Encoder Report *
** Encoder 1 **
Vendor ID: Silicon Image
Device ID: 170
Device Revision: 2
Major Version: 1
Minor Version: 0
cs_Forman
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
qoprek: je pense que ta carte ne gère pas les PBuffer (pixel-buffer) de grande taille. Le code a besoin d'un PBuffer (c'est à dire un device context OpenGl off-screen) de même taille que ton écran. Un tel pbuffer (si tu es en 1280*1024>1000000 pixels @ 32 bits) consomme au moins 3-4 MO de mémoire graphique, donc je pense que c'est de là que vient le problème, étant donné que l'allocation se fait par l'intermédiaire du driver, il se peut que celui-ci limite la taille maximale. Effectivement, il faudrait que je rajoutte quelque chose pour intercepter l'erreur proprement et mettre un message d'erreur plus parlant.

Le problème c'est qu'il n'est pas vraiment recommandé de vérifier que tous les animateurs marchent avant de les proposer dans la liste. En effet, par exemple celui qui utilise OpenGl nécessite ce fameux PBuffer de plusieurs MO en mémoire graphique (et il faut l'allouer pour vérifier que ça marche). Or, allouer une telle quantité prend du temps (jusqu'à 1/2 seconde sur ma geforce 7600) et c'est inacceptable pour une animation qui dure 700millisecondes. Donc cette mémoire devrait être allouée une bonne fois pour toute... c'est à dire seulement si l'utilisateur a choisi d'utiliser l'animation OpenGl (sinon on consomme des resources pour rien, seulement pour vérifier que ça marche). Certes on pourrait imaginer un cas où l'on testerait toutes les classes d'animateurs avant d'en faire la liste uniquement quand l'utilisateur affiche le dialogue de sélection. Mais là encore ça ne résoud pas le problème, puisque l'allocation de pbuffer peut quand même échouer si tu lances le programme plus tard après qu'un autre (lancé entre temps) ait déjà consommé les resources disponibles (en effet, la mémoire graphique est distribuée entre les applications dans l'ordre où elle la demandent)...

Pour le mode software, je ne sais pas non plus pourquoi ça ne fonctionne pas. J'utilise l'API PlgBlt qui permet de déformer une image en un parallélogramme. En découpant la surface de la fenêtre et en l'appelant plusieurs fois, je reconstitue la forme "tordue" approchée désirée. Si tu ne vois rien apparaitre, ça peut venir d'un problème de rapidité: seule la première étape (non visible car en dehors de l'écran) a le temps de s'afficher, puis le délai étant dépassé quand le programme arrive à la frame n°2, il s'arrète et donc tu ne vois rien s'afficher.

Dans tous les cas, vérifie si tes drivers graphiques sont à jour.

Merci pour les commentaires en tout cas