2012-04-22 99 views
0

使用glut的我的.c程序創建一個對象並將紋理映射到該對象上。這個對象可以被用戶操縱。當對象被放大並縮小時,它會移出窗口並離開視野。我如何確保對象在縮放或可選不能移動到窗口外時保持中心位置?如果需要,我可以包含我的代碼。OpenGL - 如何從中心縮放對象?

林想,如果我總是從對象的中心規模,這將幫助,但不知道如何做到這一點,因爲它似乎總是從,這是造成其移出屏幕

好了,所以四角規模圖像似乎從最初的中心開始縮放,但是當圖像被翻譯完畢後,任何縮放會導致圖像移動?

回答

0

這聽起來好像縮放操作不是從對象中心位置縮放對象,然後這會導致對象從其原點移開。

確保您在之前執行任何翻譯的縮放操作

+0

不,它似乎是從角落縮放。這是否有明顯的原因? – 2012-04-22 13:27:35

+0

它可能只是因爲過剩的頂點都是正的。你可以解決這個問題,我發現對象的寬度,高度和深度,使用glTranslate將這些值減一半,然後再縮放然後再翻譯。有點faf但應該做的伎倆。 – rflood89 2012-04-22 21:07:23

0

爲此,需要在對象和窗口邊緣之間創建碰撞檢測算法。如果屏幕上物體的邊緣或像素碰到窗口的邊緣,則不應再進一步。

網上有很多關於此的材料,我相信你可以找到一些例子。

0

一個對象是一組點。例如,如果它們的所有座標都是正數,則縮放似乎是從一個角落完成的。爲了防止這種情況,你需要做一些翻譯工作。

glScaled(...); 
glTranslated(/*-1 * center coordinates relative to the object*/); 
//draw the object 

請注意,有多種方法來居中對象。最簡單的是找到邊界框的中心。