Opengl 缩放和平移的平移和缩放顺序

Opengl 缩放和平移的平移和缩放顺序,opengl,Opengl,我想做的第一件事是平移到屏幕的中心,然后从那里画出所有的对象。 然后我想应用Translsate进行平移和缩放。我要相对于中心点缩放!那么,它们的顺序应该如何才能起作用呢 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); /

我想做的第一件事是平移到屏幕的中心,然后从那里画出所有的对象。 然后我想应用Translsate进行平移和缩放。我要相对于中心点缩放!那么,它们的顺序应该如何才能起作用呢

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