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 :

[DX9 VB.Net]Conversion coordonnées écran


Sujet :

DirectX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Points : 18
    Points
    18
    Par défaut [DX9 VB.Net]Conversion coordonnées écran
    Bonjour,
    J'affiche un certain nombre de vertices dans une fenêtre. Si je clique sur un vextex affiché, le programe me renvoie, biensûr, un point en coordonnées écran. Je voudrais transformer ce point en coordonnées DirectX (sans la profondeur, évidement) qui correspond à ce vertex... Je pense qu'il faut trouver le distance entre entre le point(0,0) de l'ecran et le vertex(0,0,0) en directX.
    Mais j'arrive pas à écrire un fonction qui marche à tous les coups!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    Je voudrais transformer ce point en coordonnées DirectX
    Pourrais-tu âtre plus précis? Qu'appelle tu coordonées DirectX (coordonées avant transformation?).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Nom : dxd1.jpg
Affichages : 70
Taille : 61,2 Ko

    Où l'endroit où je clique me renvoie les coordonnées de la fénêtre (x=596, y=216).Normal le point(0,0) est en haut à gauche de la fenêtre.
    Mais qui correspond à un vecteur 3D affiché par le device (x=54,12 y= 3,72).
    Là le point(0,0) est a peu prés au centre de la fenêtre. Je cherche la fonction pour relier les deux...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    Je pense qu'il faut trouver le distance entre entre le point(0,0) de l'ecran
    ...
    je clique me renvoie les coordonnées de la fénêtre
    Déjà il y a une différence entre les coordonnées écran et les coordonnées fenêtres (plus précisément celles de la zone client). Pour passer de l'un à l'autre, il y a la fonction du GDI BOOL ScreenToClient( HWND hWnd, LPPOINT lpPoint ).

    Une fois que tu possède les coordonnées dans la zone client, c'est une simple règle de trois avec un recentrage.
    CoordXDevice = CoordXClient * LongDevice / LongClient - LongDevice/2
    Idem pour Y.

    On vérifie que pour CoordXClient = 0, on a bien CoordXDevice = -LongDevice/2 et que pour CoordXClient = LongClient, on a bien LongDevice/2.

    ATTENTION: tous ces calculs supposent que tu travailles sans transformation.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    "LongDevice" correspond à quoi exactement?..

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    A la longueur du device DirectX.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    En gros si il n'y a pas de zoom, c'est la même que la longueur client!..

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    Non.

    C'est la longueur du BackBuffer.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Aîe, où je vais trouver çà, moi?..

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    Tu utilises Direct3D?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    oui

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    Et bien quand tu crée ton device, tu as les paramètres BackBufferWidth et BackBufferHeight.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    J'ai créé un device, plusieurs VertexBuffers, mais pas de BackBuffer...je vais voir çà...

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/06/2006, 18h09
  2. [VB.NET] Conversion d'une classe C# en VB.NET
    Par TraPpeur dans le forum VB.NET
    Réponses: 3
    Dernier message: 07/11/2005, 19h20
  3. [VB.NET] Conversion de caractères
    Par WriteLN dans le forum Windows Forms
    Réponses: 8
    Dernier message: 17/03/2005, 08h45
  4. [C++.NET] Conversion Byte*/Byte[]
    Par SteelBox dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 13/02/2005, 19h12
  5. [VB.NET] Conversion int-> bytes sur 4 octets
    Par SteelBox dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/01/2005, 22h08

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