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

时间:2012-09-17 15:31:22

标签: opengl

我要做的第一件事就是转换到屏幕的中心并从那里绘制所有对象。 然后我想应用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 个答案:

答案 0 :(得分:1)

我想你正在绘制一个x和y都在0,1之间的正方形。

首先,您必须转换为缩放对象应该是:

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

opengl以相反的顺序执行转换,因为它是一个管道。 从上到下的方向读取上述序列将给出密钥。