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)缩放。

4

1 回答 1

1

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

首先,您必须转换为缩放对象应为的点:

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

opengl 以相反的顺序执行转换,因为它是一个管道。以自下而上的方向阅读上述序列将给出关键。

于 2012-09-18T00:00:22.197 回答