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 :

Méthode rapide pour afficher des carré de couleur


Sujet :

DirectX

  1. #1
    Membre du Club Avatar de matteli
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Points : 57
    Points
    57
    Par défaut Méthode rapide pour afficher des carré de couleur
    Bonjour,

    Voilà je souhaite recouvrir l'écran de carrés de tailles différentes (ou de points) et de couleurs différentes.
    Ma routine détermine les coordonnées d'un carré (de taille maximale 32x32) de couleur uniforme et il est dessiné. Tout l'écran est ainsi recouvert.

    J'ai essayé la fonction DrawPrimitiveUP de DX et la fonction Polygone de win32.

    DrawPrimitiveUP me donne un framerate 2 à 3 fois supérieure à Polygone mais je me demandais si une autre fonction ne pouvait pas être plus rapide (DrawPrimitive ou autre) ?


    J'utilise VB6 (hou, je sais, c'est pas bien) et directx 8.1.

    Merci pour vos réponses.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    Je ne crois pas qu'avec les users primitives tu peux utiliser les index, enfin je dis ça sans avoir la doc sous les yeux, donc je ne suis pas sur. Bref en tout cas, DrawPrimitive le permet, et comme c'est toujours mieu d'avoir un index et que tu n'en parles pas dans ta description je pense que ça serait déjà une première optimisation.

    Enfin, ensuite si tu veux optimiser encore plus pourquoi ne utiliser les fonctions d'optimisations des meshs (mais c'est peut être spécifique a DX9 ça)

  3. #3
    Membre du Club Avatar de matteli
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Points : 57
    Points
    57
    Par défaut
    C'est quoi le principe d'un index. Je n'ai pas trouvé d'exemple clair utilisant DrawPrimitive.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    Le seul site que je connaisse qui as des exemples directx 8 c'est Code Sampler.

    Enfin, les exemples pour comprendre c'est pas forcement le mieu. Pour comprendre les index je te renvoie sur ce cours, le soucis c'est que les exemples qui illustre le cours sont en DX9.
    Pour faire cours un index permet de ne pas dupliquer des vertices qui sont identiques (dans ton cas tu n'en as que 2 par carré peut être les 4 si tu interpoles les 4 valeures des couleurs) et de permettre à la carte d'utiliser un cache de vertice qui améliore l'accès au même vertice.

  5. #5
    Membre du Club Avatar de matteli
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Points : 57
    Points
    57
    Par défaut
    Vu que des carrés voisins sont à priori pas de la même couleur et pas forcément de la même taille, je ne pense pas qu'un sommet puisse être identique entre ces 2 carrés si j'ai bien compris ce que tu veux me dire.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    Comme je le disais tu interpolais peut être tes couleurs, enfin comme tu ne le fais pas tes indices porteront que sur les carré. Ca doit donné quelque chose de relativement original quand même des carré avec des couleurs qui ne se suivent pas on peut voir un screen-shot ?

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // définition d'un carré
    VECTOR3D A = {0,0,0}; // index 0 dans ton buffer
    VECTOR3D B = {1,0,0}; // index 1
    VECTOR3D C = {1,1,0}; // index 2
    VECTOR3D D = {0,1,0}; // index 3
     
    // définition de l'index du carré
    DWORD premierTriangle[3] = {0,1,2};
    DWORD secondTriangle[3] = {0,2,3};
    Bon c'est pas top mais le principe est là. Il faut déssiner avec le TRIANGLE_LIST évidemment mais logiquement tu le fais déjà comme ça puisque tes carrés sont de taille différente.

  7. #7
    Membre du Club Avatar de matteli
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Points : 57
    Points
    57
    Par défaut
    C'est plutot le trianglestrip pour qu'avec 4 points tu puisses faire 2 triangles.
    Pour ce qui est des couleurs non identiques, elles sont proches mais pas identiques.
    Par contre dans ton exemple, vu que je n'utilise pas les vectors j'ai peut être manquer quelque chose, est ce que tu peux définir ensuite l'unité que tu veux pour le vector pour faire des carré de la taille que je veux où je veux sur l'écran?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    Avec des triangle strip tu dois déssinner tous les carrés indépendament, faire plusieur DrawPrimitiveUP au lieu d'un est a éviter. Ils ont tous des tailles différentes, c'est pour ça que je dis ça. Enfin, peut être qu'en voyant ton code je comprendrais mieu.

    VECTOR3D est la classe que j'utilise dans DX9 pour faire des calculs sur les coordonnées des meshs, ça ne représente pas forcement un vecteur au sens mathématique. Donc se que tu dis à propos des vector3D n'est pas faisable avec seulement eux.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/07/2012, 16h54
  2. [XL-2003] Méthode la plus rapide pour vérifier des conditions sur trois colonnes
    Par neiluj26 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/08/2009, 16h38
  3. Réponses: 5
    Dernier message: 23/04/2008, 15h41
  4. [Débutant] Prob pour afficher des rect de couleurs
    Par little pepito dans le forum 2D
    Réponses: 2
    Dernier message: 08/05/2007, 18h29
  5. [débutant] filtrer un fichier pour afficher des infos
    Par Valichou dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 21/04/2004, 11h44

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