Camera vs Viewport

23

Je ne comprends pas bien quelle est précisément la différence entre les coordonnées de la caméra et les coordonnées de la fenêtre. Quelqu'un peut-il clarifier?

Code Vader
la source

Réponses:

40

La caméra est comme une caméra avec laquelle le film Batman est filmé. Il existe dans un monde virtuel et peut être déplacé, ciblant différentes scènes, modifiant la distance focale et d'autres propriétés de la caméra. Vous pouvez avoir plusieurs caméras et basculer entre elles. Vous pouvez même filmer sur plusieurs caméras à la fois.

Les coordonnées typiques de la caméra sont: position dans le monde virtuel, direction de la face, vecteur vers le haut, champ de vision, etc.

Viewport est un écran de cinéma. C'est un endroit où l'image enregistrée par la caméra est affichée. Dans le monde PC, c'est une zone de l'écran dans une fenêtre ou une image plein écran. Vous pouvez afficher les flux de plusieurs caméras à la fois (comme dans ces jeux de course sur console entre 2 à 4 joueurs).

Les coordonnées typiques des fenêtres sont: la position sur l'affichage, la hauteur et la largeur.

Kromster dit soutenir Monica
la source
0

Les coordonnées de la fenêtre sont les coordonnées où elles sont placées sur l'écran. (Par exemple à l'intérieur d'une fenêtre win32).

Les coordonnées de la caméra sont la position de la caméra À L'INTÉRIEUR de la fenêtre, c'est-à-dire à l'intérieur de l'espace 2D / 3D que vous avez défini dans votre application OpenGL. La caméra ne peut pas sortir de cette fenêtre car elle se trouve dans l'espace que vous définissez où opengl peut faire son travail, à l'intérieur d'une fenêtre Win32.

Sèche
la source
Ce n'est pas tout à fait exact. La fenêtre définit le mappage de l'espace NDC vers l'espace fenêtre pour la transformation de vertex. Dans les anciennes versions de GL, ce mappage s'appliquait également à la transformation de position raster (mais il a été supprimé). Néanmoins, il existe de nombreuses opérations GL qui ne sont pas limitées par la transformation des sommets et vous pouvez donc faire des choses comme effacer le tampon de couleur en dehors de la fenêtre. En fait, la seule façon de restreindre la suppression d'un tampon à une région spécifique du framebuffer est d'utiliser une autre chose, appelée boîte à ciseaux ( glScissor (...)).
Andon M. Coleman