2012-09-17 68 views
0

我想要做的第一件事就是轉換到屏幕中心並從那裏繪製所有對象。 然後我想申請tranlsate平移和縮放縮放。我想相對於中心點縮放!那麼它們的順序應該如何才能起作用呢?縮放和平移的平移和縮放順序

glTranslatef(width/2, height/2, 0); 
gltranslate(centerX,centerY); // go to center point 
glscale(zoom); 
glTranslatef(offset.x/zoom, offset.y/zoom, offset.z/zoom); // pan 

我試過上面的順序,但它沒有去中心點,它總是相對於(0,0)縮放。

回答

1

我想你正在繪製一個正方形,其中x和y的值都在0,1之間。

首先你要轉換爲點縮放對象應該是:

glTranslate3f(centerX,centerY,0); 
glScale(zoom); 
glTranslatef(-0.5f, -0.5f,0); // to the middle 
draw stuff 

的OpenGL執行轉換以相反的順序,因爲它是一個管道。 以自下而上的方向讀取上述序列將給出關鍵。