2010-11-06 7 views
0

ok quand je dessinais des choses en utilisant gdi + je connaissais les coordonnées des objets mais maintenant quand j'utilise des maillages en directx 9 je ne sais pas comment obtenir les coordonnées de l'objet pour que je puisse trouver si la souris sur un objet. une idée de comment trouver les coordonnées?directx 9 souris sur un objet

Répondre

0

Vous devez placer la position de la souris dans le monde et la convertir en coordonnées espace-monde, qui sont ensuite testées par rapport aux différents objets. Vous pouvez trouver une bibliothèque pour faire cela pour vous, je sais que OpenGL prend en charge la sélection et la plupart des wrappers offrent des fonctions améliorées pour cela, mais le principe est:

Trouvez les coordonnées de la souris dans la fenêtre. En utilisant ces coordonnées, lancer un rayon (si vous utilisez réellement un rayon dans le système ou simplement faire des calculs similaires n'est pas un gros problème ici) dans le monde. Vous utiliserez la matrice de vue actuelle (angle et position de la caméra) pour calculer la direction et l'origine du rayon. En utilisant ce rayon, testez vos objets, leurs limites ou la géométrie (selon votre choix) pour trouver l'objet. En utilisant les coordonnées d'intersection, trouvez l'objet qui se trouve à cet endroit.

Vous pouvez également utiliser très facilement le tampon de profondeur si votre scène est relativement statique. Rendu simplement avec une texture de profondeur définie comme tampon Z, puis utilisez la profondeur, la position de la souris et la matrice de vue pour trouver le point d'intersection.

Il peut être possible de faire cela en sens inverse, c'est-à-dire de mapper chaque objet aux coordonnées d'écran appropriées, mais vous rencontrerez probablement des problèmes avec les zones de tri et de chevauchement de profondeur. En outre, il peut être inutilement lent de mapper chaque objet à des zones de fenêtre à chaque image.

Questions connexes