3 votes

Quelle est la différence réelle entre gluortho2d et glViewport ?

J'ai fait une fenêtre de taille 800x600 . J'ai appelé

gluOrtho2D(-400,400,-300,300);
glViewport(400,300,400,300);

et j'ai dessiné une ligne de (-100,-100) a (100,100) . Je pense que je devrais voir une ligne de (0,0) a (100,100) mais je reçois la ligne entière. Comment cela se fait-il ?

10voto

Daniel Yankowsky Points 3719

En théorie, glViewport ne provoque pas d'écrêtage (voir section 10) . Normalement, tout le dessin est coupé à la fenêtre. Puisque vous avez demandé à OpenGL de dessiner dans une région de votre fenêtre, vous devrez également dire à OpenGL de couper les coordonnées en dehors de cette fenêtre. Pour cela, vous aurez besoin de glScissor . Cependant, certaines implémentations fixent leur dessin à la fenêtre d'affichage (voir mon commentaire pour plus de détails).

De plus, vos calculs sont faux. Votre matrice de projection fait 800 unités de large sur 600 unités de haut, centrée sur (0, 0). Elle est ensuite mise en correspondance avec une partie de la fenêtre de 400 pixels de large sur 300 pixels de haut, dans le coin supérieur droit de la fenêtre.

Si vous tracez une ligne de (-100, -100) à (100, 100), elle ne s'étendra que sur une petite partie de votre frustration visuelle. Le frustrum est dimensionné pour tenir dans la fenêtre d'affichage.

Dans l'image, la boîte bleue est la fenêtre, et la boîte rouge représente la fenêtre de visualisation. La ligne noire doit être la ligne que vous avez dessinée.

Une image décrivant ce que dit le paragraphe. http://img696.imageshack.us/img696/6541/opengl.png

J'espère que cela vous aidera !

0voto

drahnr Points 3628

GlViewport décrit la zone de votre fenêtre qui sera dessinée par OpenGL. glOrtho ou gluOrtho2D définissent un système d'unités (unités OpenGL) qui s'adaptent à cette zone (via glViewport définie). Donc votre ligne sera dessinée dans le Viewport de -100,-100 à 100,100.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X