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 :

[C++] [DirectX 9] Afficher un cercle


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 58
    Par défaut [C++] [DirectX 9] Afficher un cercle
    Salut !

    Je suis en train de réaliser un petit jeu en 2D et j'ai besoin de représenter pas mal de cercles.

    Pour qu'ils soient beaux, je les représente donc sous la forme d'une liste de points que je passe dans un Vertex buffer. Mais je trouve que ce n'est pas très rapide et je crois qu'un triangle comportant autant de pixels s'affiche bien plus vite. Devrais je faire des approximations en les représentant sous la forme de plusieurs triangles ou avez-vous une méthode intéressante pour accélérer l'affichage.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Mais je trouve que ce n'est pas très rapide et je crois qu'un triangle comportant autant de pixels s'affiche bien plus vite
    "qu'un triangle comportant autant de pixels" ->

    J'aimerais t'aider, mais je bloque sur la compréhension du problème la !

    Pixels vs points 3D ?

    Devrais je faire des approximations en les représentant sous la forme de plusieurs triangles
    Cercles ou disques ?

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 58
    Par défaut
    Je parle de disques et en fait je veux juste faire une comparaison avec le nombre de pixels à afficher.

    En ce moment, je place tous les pixels de l'écran qui doivent appartenir au disque dans un tableau que je je transmet ensuite à mon vertex buffer qui les représente donc en les considérant comme une liste de points et je voudrais savoir s'il n'y avait pas une méthode plus rapide.
    Je ne les considère pas comme points 3D, j'utilise le Tag XYZRHW. Je ne fais que de simples animations 2D et je m'occupe donc directement de l'affichage à l'écran.

    Désolé pour le manque de précisions.

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Equation du cercle.
    http://fr.wikipedia.org/wiki/Cercle

    1 point au centre, tu choisis un angle de découpe du disque, ensuite pour chaque section du disque tu créer un triangle.

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 58
    Par défaut
    Merci mais en fait je ne suis peut être pas assez clair.

    Je sais représenter un cercle.
    Pour le moment je transmet les coordonnées des pixels appartenant au disque à mon vertex bufffer (en vérifiant que leur distance au centre est plus petite que le rayon).
    Je suis aussi capable de découper le disque en triangles pour l'afficher de cette manière mais il faut au moins 20 triangles pour que le résultat ressemble à peu près à un disque.

    Je voudrais savoir, puisque c'est une figure assez courante, s'il existe une méthode mieux que les autres pour représenter un disque, car avec la méthode des pixels (1ère méthode), on doit calculer pas mal d'expressions bouléennes (j'en calcule 4*r² si r est le rayon du cercle), et avec les triangles, les disques sont moins beaux, et on calcule au moins une vingtaine de sommets en utilisant en plus les fonctions trigonométriques qui ne sont peut-être pas aussi rapides que les simples expressions bouléennes.

    Il faut que j'en affiche plein (plus de 50) et très rapidement pour avoir une animation fluide.

  6. #6
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Plus de 50 cela devrait aller, ce n'est pas énorme.
    Sinon afficher une texture en forme de disque ?

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par koushkov
    et avec les triangles, les disques sont moins beaux,.
    Oui je suis bien d'accord mais avec les API 3d ( et Open GL je crois que c'est pareil ) les objets sont affichés seulement sous forme de listes de triangle ( à confirmer).
    Je pense que c'est le seul procédé possible car Direct X ( et la carte graphique ) a besoin de listes de triangles pour plaquer des textures dessus et réaliser les éclairages désirés.

    Tu peux essayer d'afficher n'importe quelle primitive 3d ( sphère, cube) , elle sera décomposée en liste de triangle..

    Si tu veux faire de la 2d simplement , prendre SDL ou ..Direct Draw
    Avec SDL cela sera peut-être bien plus rapide car tu peux dessiner des cercles pixel par pixel dans une "surface" SDL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher plusieurs cercles
    Par chaker707 dans le forum 2D
    Réponses: 2
    Dernier message: 22/02/2012, 11h41
  2. [Google Maps] aide pour afficher multiple cercles
    Par skwi6 dans le forum APIs Google
    Réponses: 1
    Dernier message: 24/03/2011, 16h52
  3. Réponses: 1
    Dernier message: 18/02/2011, 09h49
  4. [Flex2] créer/afficher un cercle par programmation ?
    Par frenchy404 dans le forum Flex
    Réponses: 4
    Dernier message: 17/02/2008, 13h24
  5. Afficher des images sous directX
    Par cyberlewis dans le forum DirectX
    Réponses: 17
    Dernier message: 12/07/2004, 12h07

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