gluOrtho2D et glViewport
J'ai un objet défini dans les coordonnées du monde, dire un cercle centré en (2,3) et de rayon 4. Si je veux le cercle pour ne pas être déformé pour être entièrement visible dans la fenêtre d'affichage et d'être aussi grande que possible à l'intérieur de la fenêtre d'affichage, comment puis-je formuler une gluOrtho2D commande pour créer un monde à la fenêtre basée sur les spécifications susmentionnées étant donné que:
glViewport(20, 30, 1000, 500)?
Je suis de se confondre avec l'ensemble de la fenêtre d'affichage vs monde vs écran, etc coordonnées. Quelqu'un peut-il me guider à travers elle? Je veux vraiment obtenir le blocage de ce.
source d'informationauteur Alex
Vous devez vous connecter pour publier un commentaire.
Dans votre exemple, la fenêtre d'affichage est de 1000 pixels par 500 pixels de haut. Si vous avez besoin de spécifier glOrtho coordonnées qui ont le même rapport d'aspect (2:1).
Votre cercle est de 4 unités de rayon, vous avez donc besoin d'un point de vue qui est de 8 unités de haut par 8 unités de large au moins. Compte tenu de la 2:1 ratio d'aspect, nous allons faire que 16 unités de large par 8 unités de haut.
Le centre est à (2, 3). Afin de centrage ces 16 x 8 autour de ce que vous devriez obtenir:
Qui est:
Efficacement les cartes de la coordonnée X de -6 pour le bord gauche de la fenêtre d'affichage. Le glViewport cartographie ensuite des cartes de l'emplacement réel sur l'écran. Comme la taille de l'écran change, vous devez régler le glOrtho2D coordonnées pour compenser le ratio d'aspect, mais tant que la fenêtre est de 2:1, ces glOrtho2D appels n'aurez pas besoin de changer.