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 :

Afficher une texture "pleine" sur un support non c


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 Afficher une texture "pleine" sur un support non c
    Bonjour, bonne année à tous

    Je travaille actuellement sous DirectX. Je souhaite pouvoir afficher une image, en texture sur un secteur d'anneau. J'ai défini ma géométrie à l'aide de points, les fameux vertex et je leur associe une coordonnée de texture. Seulement, le Directx ne fait pas d'interpolation de lui même et il y a des distortions sur le bas de l'image et des pixels sans valeurs. Même si je ne fais qu'afficher des points blancs sans texture, je n'ai pas une surface blanche.
    Est ce du au fait que je n'utilise que des points?
    J'ai essayé de faire avec une surface faite de triangles, mais cela ne me donne pas la géométrie que je souhaite.
    Y a t il des corrections à apporter "à la main" - mais ça risque d'être lourd - ou automatiquement avec une option DirectX?

    Merci d'avance.

  2. #2
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    ce n'est pas très clair...

    Tu as un screenshot ou une explication un peu plus détaillée de ton probleme ?

  3. #3
    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
    Je ne sais pas comment attacher une image à ce message, je ne sais pas la syntaxe qu'on doit mettre après img, à la prévisualisation ils n'affichent pas mon image; alors je vais essayer d'être plus clair:
    Je pars d'une image carrée blanche que je charge en tant que texture, et je veux l'appliquer sur une forme en arc d'anneau, un secteur angulaire. Je passe les coordonnées de ma forme, en coordonnées cartésiennes par rapport à ma fenêtre de projection.
    J'associe à chacun des points de cet espace un point de mon image.
    Je souhaite obtenir une image de secteur complètement blanche; or, du à la transformation des coordonnées de la texture, il apparaît des zones noires ou avec des valeurs intermédiaires. Il me faut donc faire une interpolation pour que mon image à l'arrivée ait un aspect uni. Comment peut on réaliser une telle interpolation avec DirectX?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je ne sais pas comment attacher une image à ce message, je ne sais pas la syntaxe qu'on doit mettre après img
    Tu mets simplement l'url de ton image entre les 2 balises img et /img.

    J'ai pas compris non plus ton problème.

  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
    [img]c:/temp/resultat_transformation.bmp[/img]

    J'espère que ça a bien été attaché...
    C'est le résultat que j'obtiens en transformant une image faite de lignes horizontales noires d'un pixel de large (faite sous paint). Comment peut faire pour supprimmer les tâches noires et améliorer les contrastes entre les blancs et les noirs, les lignes sont censées être noires mais là elles sont grises.

  6. #6
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par Mastero
    [img]C:/temp/resultat_transformation.bmp[/img]
    Salut, ceci ne fonctionne qu'avec une image du web, tu dois l'uploader quelquepart

  7. #7
    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
    où et comment peut on l'uploader?

  8. #8
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    par MP stp

  9. #9
    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
    Citation Envoyé par rolkA
    MP
    Je ne comprends pas ces signes, je comprend essentiellement le français, l'anglais, un peu l'allemand ou l'espagnol. Si on a un problème on ne peut pas uploader une image directement? Vous ne pouvez pas ajouter une commande pour faire ça?

  10. #10
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut



    MP = message privé...

  11. #11
    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
    Bon j'essaie de réespliquer mon problème, ce sera plus simple.
    Vous avez tous vu l'image d'une échographie? c'est une image carrée qui est disposée en arc de cercle. Je dois faire ça sous DirectX. J'ai défini ma surface avec une POINTLIST et j'associe une coordonnée de texture a chacun des sommets de ma surface.

    Or le rendu met des points noirs en bas de l'écran dû à la distorsion de mon image, comment peut on faire pour que toute la surface soit recouverte par mon image?

  12. #12
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Voici l'image illustrant le phénomène:


  13. #13
    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
    Citation Envoyé par Mastero


    C'est le résultat que j'obtiens en transformant une image faite de lignes horizontales noires d'un pixel de large (faite sous paint). Comment peut faire pour supprimmer les tâches noires et améliorer les contrastes entre les blancs et les noirs, les lignes sont censées être noires mais là elles sont grises.
    Est ce qu'il existe des méthodes / fonctions pour améliorer le rendu. Merci d'avance
    Merci rolkA pour ton aide,

  14. #14
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    si tu veux une image continue, tu la rends sous forme de triangles plutot que de points (Ou alors tu t'arranges pour qu'il y ait autant de points que de pixels).

    Comme tu as déjà la liste de points dans un vertex buffer avec la coordonnée sur l'écran et la coordonnée de texture, passer aux triangles est super simple. Il suffit de créer un index buffer contenant une liste d'indices qui vont définir des triangles à tracer.
    le premier triangle sera: le point 0 de la rangée 0 avec le point 1 puis le point 0 de la rangée 1. Le second triangle, le point 1 de la rangée 0 puis le point 1 de la rangée 1 puis le point 0 de la rangée 1. etc.. jusqu'à épuisement des points, colonne par colonne puis rangée par rangée (de simples boucles for devraient faire l'affaire).

    Ensuite tu demandes à tracer un "drawIndexedPrimitive" avec le parametre triangle_list et c'est parti.

    Attention au sens de tracé sur l'écran, si tu as spécifié un paramètre de CULLING. Pour etre plus sur désactive le culling ou arrange toi pour que ton ordre de tracé corresponde au paramètre que tu as envoyé.

  15. #15
    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
    Merci de bien avoir voulu répondre.
    J'essaye de mettre par écrit la méthode que tu me conseilles.
    Est ce que cette indexation ne pose pas un problème au niveau de la numérotation et du tracé de ces triangles? Par exemple quand on arrive au bout d'une ligne ou d'une colonne on doit revenir au début de la suivante et ne pas prendre en compte le triangle avec le dernier de la colonne 0 avec les premiers de la colonne 1. De plus certains même sommets (c'est comme ça que je traduis "vertex/vertices") vont être renumérotés plusieurs fois

  16. #16
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Non l'interet de passer aux indices et aux listes de triangles et que justement tu n'as pas à te soucier de la connectivité des triangles, deux colonnes qui se suivent peuvent donc n'avoir aucun point en commun et c'est aussi vrai dans le sens contraire un sommet peut être utilisé plusieurs fois (s'il partage les memes coordonnées de textures et autres données).

    Si tu es limité en performance par la transformation de vertex, alors il peut être interessant de réordonner ta liste de triangles et/ou ton vertex buffer pour optimiser l'utilisation des caches de pré-transform et post transforms. Mais bon je doute que ce soit ton problème pour l'instant.

  17. #17
    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 regardé ce matin sur la documentation MSDN ça m'a aussi aidé je dois réviser les suites géométriques...

  18. #18
    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
    Citation Envoyé par LeGreg
    Non l'interet de passer aux indices et aux listes de triangles et que justement tu n'as pas à te soucier de la connectivité des triangles, deux colonnes qui se suivent peuvent donc n'avoir aucun point en commun et c'est aussi vrai dans le sens contraire un sommet peut être utilisé plusieurs fois (s'il partage les memes coordonnées de textures et autres données).

    Si tu es limité en performance par la transformation de vertex, alors il peut être interessant de réordonner ta liste de triangles et/ou ton vertex buffer pour optimiser l'utilisation des caches de pré-transform et post transforms. Mais bon je doute que ce soit ton problème pour l'instant.
    J'ai regardé dans les tutoriaux et j'ai essayé par moi même aussi. Par exemple pour former un carré: ils font deux triangles avec les quatre sommets 0,1,2,3

    0--1
    | / |
    | / |
    2--3

    ils font une liste avec 012 123 qu'ils passent dans leur indexbuffer. Or tu m'as dit que ce n'est pas nécessaire de réordonnancer les points.
    Ma grille peut faire 255 * 255 points au maximum.
    J'ai créé un algo qui parcours la grille et un autre qui génère les numéros de sommets par lesquels doit se former ma liste de triangles. Dois je passer ces listes, telles qu'elles étant assez volumineuses?
    Merci encore de bien vouloir éclairer ma lanterne

  19. #19
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Tu crées ce qu'on appelle un index buffer qui est crée et rempli comme ton vertex buffer mais avec tes sommets numérotés.
    Tu dois faire un setstreamsource pour indiquer les données par sommet (un ou plusieurs vertex buffers) et un setIndices pour indiquer l'index buffer à utiliser.

    Ensuite pour tracer tout ça, tu fais un appel à DrawIndexedPrimitive qui fonctionne comme DrawPrimitive, à ceci pret qu'il va utiliser ton index buffer pour determiner l'ordre des sommet, à la place de les lire dans l'ordre dans ton vertex buffer. L'ordre dans lequel tu remplis ton vertex buffer peut donc n'avoir rien à voir avec l'ordre de ton tracé.
    Et tu peux tracer toute ta grille en un seul appel à DrawIP, du moment que les RenderState ne changent pas.

  20. #20
    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
    C'est bon, J'ai résolu mon problème grâce aux index buffers et vertex Buffers, merci encore pour votre aide, je ne sais pas comment vous aider à mon tour, puisque j'en sais peut être moins que vous en C / C++

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Afficher une vidéo en pleine écran sur youtube avec le WebBrowser
    Par Oromis56 dans le forum VB.NET
    Réponses: 5
    Dernier message: 14/04/2015, 15h15
  2. Afficher une texture sur un GL_Quads
    Par alex6891 dans le forum OpenGL
    Réponses: 24
    Dernier message: 21/07/2006, 21h16
  3. Afficher une texture plein ecran en 2D
    Par venomelektro dans le forum OpenGL
    Réponses: 8
    Dernier message: 07/10/2004, 13h30

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