【问题标题】:the order of translate and scale for zoom and pan缩放和平移的平移和缩放顺序
【发布时间】:2012-09-18 08:00:22
【问题描述】:

我要做的第一件事是平移到屏幕中心并从那里绘制所有对象。 然后我想应用 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) 缩放。

【问题讨论】:

    标签: opengl


    【解决方案1】:

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

    首先你必须转换到缩放对象应该是的点:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-08
      • 2013-12-12
      • 2016-03-10
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      相关资源
      最近更新 更多