2012-02-13 41 views
2

我正在使用glVertex2f()在数组中绘制一些点,并且我需要翻转它。我在glViewport()中绘制它,所以我可以调整它大小并移动它。但我不知道如何翻转它。翻转用glVertex2f()绘制的图形?

我必须使用gluOrth2d()吗?我不完全理解gluOrth2d()和glViewport()之间的区别以及何时使用哪个。

回答

1

glViewport()设置视口。那就是它设置了整个几何图形将被绘制的窗口的哪一部分。请注意,它接受整数(!!)而不是浮点数,仅仅是因为我们需要精确到渲染发生的屏幕部分。

gluOrtho,像gluPerspectiveglFrustrum e.t.c.用于设置投影矩阵

请注意,即使您的程序中没有使用gluOrtho2D(),您仍应该使用它,因为您始终需要自己设置透视投影。

编辑:(修正以符合在评论中给出的指针)

为了翻转整个场景,假设它是2D的,你可以做到这一点

glScalef(1,-1,1); 

这将成倍增加当前带有缩放矩阵的模型视图矩阵,有效地翻转场景。

因为你似乎需要帮助理解利用OpenGL矩阵我想提供这两个环节,我希望可以帮助:

Explains without lots of math

Explains with a bit more math

+2

'gluOrtho'不设置**透视**投影。它只是设置投影。具体来说,'gluOrtho'创建* orthographic *投影矩阵并将其乘以当前矩阵。它不是*透视投影,非常符合定义。 – 2012-02-13 04:29:46

+0

水平和垂直不会旋转吗? – 2012-02-13 04:29:48

+0

该死的我和我的英语。是尼科尔这就是我想说的... – Lefteris 2012-02-13 04:31:33

2

你会垂直翻转场景(颠倒):

glScalef(1, -1, 1); 

或水平翻转:

glScalef(-1, 1, 1);