2012-09-17 73 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执行转换以相反的顺序,因为它是一个管道。 以自下而上的方向读取上述序列将给出关键。