2010-12-28 5 views
4

J'essaie d'utiliser Direct3D pour rendre des graphiques 2D, comme recommandé par tout le monde depuis la dépréciation de DirectDraw. Il n'y a vraiment pas de 3D-ness qui m'intéresse, et je veux juste être capable de faire des choses comme dessiner des lignes, des cercles et des images de blit sur l'un l'autre. Mes questions sont doncGraphiques 2D avec Direct3D

  1. J'ai besoin de charger beaucoup d'images à partir de fichiers, et les dessiner les uns sur les autres. Les textures seraient-elles le chemin à parcourir?
  2. Question très stupide, mais je n'arrive pas à trouver quelque chose: Comment rendre une surface sur une autre?
  3. Devriez-vous tout restituer sur une seule texture, puis dessiner cela à l'écran en tant que sprite, ou simplement dessiner beaucoup de textures?
  4. Comment dessiner des lignes, etc, sur une texture/surface/sprite? Je suppose qu'il y a un meilleur moyen que d'obtenir un contexte de périphérique et d'utiliser GDI pour en tirer parti?

Répondre

3
  1. Oui
  2. Créer 2 triangles formant un quad. Réglez les valeurs UV de manière appropriée. Les valeurs UV sont comprises entre 0 et 1. Ainsi, pour une image de 1024x1024 (ou en fait toute texture de résolution, pourquoi c'est ainsi), l'image en haut à gauche est 0,0 et l'image en bas à droite est 1,1. ID3DXSprite vous aidera ici.
  3. Il est préférable de mettre plusieurs "cadres" dans une texture pour éviter de changer la texture trop souvent (c'est cher).
  4. Vous pouvez utiliser D3DPT_LINELIST/STRIP ... A défaut d'utiliser 2 triangles (Voir ID3DXLine).