2012-02-13 93 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);