缩放和平移的平移和缩放顺序
问题描述:
我想要做的第一件事就是转换到屏幕中心并从那里绘制所有对象。 然后我想申请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)缩放。
答
我想你正在绘制一个正方形,其中x和y的值都在0,1之间。
首先你要转换为点缩放对象应该是:
glTranslate3f(centerX,centerY,0);
glScale(zoom);
glTranslatef(-0.5f, -0.5f,0); // to the middle
draw stuff
的OpenGL执行转换以相反的顺序,因为它是一个管道。 以自下而上的方向读取上述序列将给出关键。