2012-04-14 31 views
0

glTranslate()的參數指定了原點翻譯單位的數量。因此,有可能超出顯示屏。有沒有辦法將我們移動的數量標準化,以便我們不超出繪圖區域?Normalized glTranslatef()

+1

你是什麼意思的「正常化」?你只是想鉗住價值觀嗎?你在2D還是3D? – 2012-04-14 21:37:18

+0

假設2D。參數是否可以正常化?例如x = 1.0會使我們從中心到左邊界,這樣我們就不會超出繪圖區域。謝謝! – Iceman 2012-04-14 21:40:34

+0

這些單位如何與實際顯示區域相對應。例如,我應該從中心翻譯多少到達繪圖區域的邊緣? – Iceman 2012-04-14 22:10:10

回答

6

glTranslate()的參數指定原點翻譯的單位數量。

否(人們應該停止學習固定功能GL的另一個原因)。

glTranslate生成矩陣,它與當前矩陣右乘以成爲新的當前矩陣。它確實創建了一個翻譯矩陣,但它不一定從屏幕的中心移動。例如,這是完全合法:

glTranslatef(10.0f, 10.0f, 10.0f); 
glTranslatef(0.0f, 50.0f, 0.0f); 

這也是有效做到這一點:

glTranslatef(10.0f, 10.0f, 10.0f); 
glRotatef(90.0f, 0.0f, 0.0f, 1.0f); 
glTranslatef(0.0f, 50.0f, 0.0f); 

這做了翻譯,然後繞Z軸旋轉90度。這會影響最終的翻譯。

你也可以在裏面放一個比例。

如果你想保留一個對象在屏幕上,它是,而不是OpenGL。

+0

謝謝。這些單元如何與實際顯示區域相對應。例如,我應該從中心翻譯多少到達繪圖區域的邊緣? – Iceman 2012-04-14 21:44:45

+0

使用默認的投影矩陣,您的繪圖區域是所有三個軸上的範圍[-1,1]。您始終可以創建投影矩陣來更改這些邊界。 – 2012-04-14 22:12:20

+0

明白了。謝謝! – Iceman 2012-04-14 22:15:33

相關問題