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

Composants VCL Delphi Discussion :

[Refresh] Probleme de mise a jour graphique


Sujet :

Composants VCL Delphi

  1. #1
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut [Refresh] Probleme de mise a jour graphique
    J'ai dans un de mes programmes une fenetre de visualisation 3D.
    Cette fenetre a besoin d'un appel a "DrawFrame" pour dessiner son contenu (3D temps reele).

    Autrement dit le frame rate de ce moteur 3D depends de la frequence d'appel a "DrawFrame".

    Dans les tutos de ce moteurt 3D (TrueVision 3D) il est preconisé de faire appel a cette methode dans l'evenement "OnIdle" avec le parametre "Done" a false pour qu'elle ne s'execute pas qu'une seule fois mais en boucle.

    Grace a cet evenement on peut atteindre avec un monde vierge un framerate de 700/800 fps.

    Mon souci c'est que des que l'on deplace la fenetre, l'appel a on Idl ne se fait plus donc le moteur 3D n'evolue plus. Il se fige en attandant que la sourie soit relachee.

    De meme, lorsqu'un bout la le fenetre passe hors ecran, on a la partie hors ecran qui s'efface pour la belle couleur clBtnFace par defaut

    Le seul moyen actuelement trouvé est de passer par un timer avec un interval de 1ms (minimum possible).
    Mais la le frame rate tombe a 70fps max ....


    Une solution pour garder le fps de Application.onIdle tout en gardant conservant les appels lors de deplacement ou autres ?
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    OnIdle survient quand la file de messages de l'application est vide. Forcément, quand tu interagis avec l'UI, tes fenêtres recoivent des tonnes de messages et OnIdle n'est logiquement plus appellé. Alors franchement, je ne vois pas de solution magique...
    "It's more fun to compute !"

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    C'est un peu ce que je craignais .... et francement ... ca m'embete enormement ... :/

    J'ai essayer avec un Thread mais le peut d'essai que j'aifait ne marchepas.
    Eventuelement si qque a uen idee pour gerer ce genre de truc via un thread ....
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Fais la même chose dans OnMessage en plus de OnIdle
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Dans ce cas, bien faire gaffe que le code appellé ne déclenche pas lui même des messages car on rentre vite dans une boucle infinie... Or, étant donné que le raffraichissement de données graphiques est géré avec WM_PAINT, j'ai peur que ce soit le cas. A confirmer !
    "It's more fun to compute !"

Discussions similaires

  1. Problème de mise à jour rpm
    Par Le gogole dans le forum Mandriva / Mageia
    Réponses: 2
    Dernier message: 17/02/2006, 13h45
  2. [SGBD] [MySQL] Problème de mise à jour d'une table
    Par philippef dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 13/01/2006, 15h42
  3. probleme de mise a jour automatique de windowd XP
    Par blandinais dans le forum Windows XP
    Réponses: 4
    Dernier message: 25/12/2005, 23h39
  4. probleme de mise a jour de la BD depuis un formulaire
    Par sebduduf dans le forum Requêtes
    Réponses: 1
    Dernier message: 01/11/2005, 18h07
  5. [] [Install] Problème de mise à jour des dll
    Par pepper dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 23/01/2003, 22h34

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