2010-05-07 6 views
0

En OpenGL, vous pouvez réellement dessiner du texte avec une position XYZ, et il apparaîtra à cet emplacement, mais dans une taille fixe.Texte DirectX à (x, y, z)

Si quelqu'un a joué à MechWarrior 2, il l'a utilisé pour les points de nav. Le texte avait une position en 3D, mais il semblait toujours avoir une taille fixe. Le point de navigation était en fait un peu de texte à cet endroit précis de l'espace. En dehors de cela, la possibilité de placer du texte en 3D était pratiquement inutile. Vous voulez toujours que le texte soit en 2d, juste?

Je suis finalement dans une position où je veux cette fonctionnalité. J'ai ces points dans l'espace auxquels j'ai besoin d'assigner des informations textuelles, c'est-à-dire que je dois dessiner du texte à une taille fixe mais avec une position 3D. Cela peut-il être fait à partir de DirectX?

+0

Avez-vous essayé quelques exemples en utilisant le rendu de texte? Il y a aussi un exemple de sélection de souris qui pourrait vous aider à obtenir la coordonnée 2d spécifiée par le pixel d'un point 3d. – phimuemue

Répondre

1

ID3DXFont utilise une position 2D. Cependant, vous pouvez toujours l'utiliser. D3DX est également livré avec un D3DXVec3Project qui vous permettra de convertir une coordonnée 3D en une position d'écran.

0

En supposant que vous traduisez du texte sur un quad 3D, vous devez redimensionner le texte en fonction de la distance z de la caméra. La formule exacte dépend de votre transformation monde-> vue-> écran, mais elle devrait être facile à calculer en prenant la transformée inverse d'un vecteur de hauteur donné, disons, (0, 1, 0) en coordonnées d'espace homogène.

EDIT: Si tout ce que vous voulez est la position 2d à l'écran, transformez la position 3d de l'espace du monde en espace d'écran.

+1

Non, je crois que ce qu'il veut, c'est du texte 2d (c'est-à-dire une superposition) dont la position est déterminée par la position du pixel d'un point 3d. – tloflin

+0

@tloflin oui, exactement, – bobobobo

Questions connexes