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

DirectX Discussion :

combien de temps met la boucle de rendu?


Sujet :

DirectX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 55
    Points : 24
    Points
    24
    Par défaut combien de temps met la boucle de rendu?
    Bonjour
    est ce que quelqu ' un connait un ordre de grandeur du temps nécessaire pour une fonction Render() pour
    charger le flux de vertex (2*2 avec une couleur, à terme elle va être beaucoup plus grande et avec plusieurs textures)
    charger le flux d'indices (6 pour l'instant)
    et la fonction DrawIndexedPrimitives()

    Comment peut on optimiser ce temps?
    Ces fonctions peuvent elles être appelées en dehors de la fonction Render() par exemple à l'initialisation de ma forme géométrique?

    Je souhaiterais tester cette hypothèse que peut être ça met trop de temps? En effet j'ai fait 2 programmes utilisant DirectX.
    L'un chargement une seule image en statique.
    L'autre en charge plusieurs et renouvelle le dessin toutes les n millisecondes en dynamique.
    Or de ma scène dynamique, il n'apparait que le fond.

    J'ai vérifié que les paramètres de matrices de vue et de projection, les devices, la lumière étaient paramétrés identiquement dans les deux cas. D'où l'idée est que ça peut venir du temps d'affichage.

    Merci par avance de votre aide.

  2. #2
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    Lance PIX et la reponse sera donnee a la microseconde pres.

    Mais ca ne reglera pas le probleme.
    Laurent -- http://jeux-directx.com/

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Tu peux utiliser la fonction DXTimer de directx qui te permettra d'avoir le temps entre chaque frame et donc le nombre de frame par seconde qui dépend de la machine que tu utilises. Pour optimiser ce temps tu peux utiliser le flip de la carte graphique qui te permet d'avoir un buffer de travail et un buffer d'affichage. Pendant que l'un est affiché l'autre est écrit et on flip a chaque coup.il faut créer deux surfaces une primaire et une secondaire avec leur surface descriptionpuis un clipper et enfin tu fais un truc du genre

    surfacePrimary.Flip(surfaceSecondary, FlipFlags.Wait);

    et voila.
    bon C un peu technique mais la performance passe par la.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 55
    Points : 24
    Points
    24
    Par défaut
    j'ai trouvé pourquoi ça s'affichait pas. On va dire que c'est une erreur de débutant que je suis
    J'avais mis dans ma structure de Vertex des double au lieu des float. Je pensais que double tu avais une meilleure précision et puis les fonctions cos et sin renvoient des double (je m'en sers dans mes transformations de ma forme géométrique).
    Mais il n'ya que dans le cours de Mr P Mignot de Reims que c'est expliqué que ce doit être obligatoirement des float!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 55
    Points : 24
    Points
    24
    Par défaut
    Maintenant je peux à nouveau afficher en transformant les coordonnées de texture. (je les passe dans la carte graphique à l'initialisation de ma forme). Dans ma fonction de Render() je n'ai que le SetTexture() et le DrawIndexedPrimitive()
    J'ai observé le fonctionnement de mon programme avec le gestionnaire des tâches.

    le CU est utilisé à 100% mais la mémoire reste constante. Cela me fait penser que les objets sont bien mis dans la mémoire de la carte Graphique. Cependant, je souhaiterais m'assurer que le GPU fonctionne indépendament du CPU à ce moment. Existe t il un outil pour visualiser le fonctionnement du GPU, à la manière du gestionnaire de tâches?

Discussions similaires

  1. [Spip] Combien de temps pour créer un site web ?
    Par gamerome dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 13/09/2008, 08h21
  2. Réponses: 6
    Dernier message: 29/06/2006, 15h10
  3. combien de temps pour passer le patch 9.2.0.7
    Par o-l-i-v-i-e-r dans le forum Oracle
    Réponses: 3
    Dernier message: 14/06/2006, 18h16
  4. [weblogic] combien de temps pour être expert
    Par estampille dans le forum Weblogic
    Réponses: 3
    Dernier message: 29/03/2006, 17h49
  5. Réponses: 5
    Dernier message: 01/07/2005, 12h46

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