放大鼠标的算法(OpenGL)

我有一个左上角坐标系的OpenGL场景。 当我glScale时,它从左上角的(0,0)放大。 我希望它从鼠标的坐标(相对于OGL框架)放大。 这是怎么做到的? 谢谢

我相信这可以分四步完成:

  1. 使用窗口系统(即GLUT或SDL)具有的任何function找到鼠标的x和y坐标,并使用gluUnProject获取与这些窗口坐标对应的对象坐标
  2. 翻译(x,y,0)以将原点放在那些坐标处
  3. 按您想要的矢量(i,j,k)缩放
  4. 翻译(-x,-y,0)将原点放回左上角

我使用glortho进行了平滑的放大。 我的解决方案的骨架是

glortho(初始视口x,y和大小)
glcalllist(我的显示列表)
给予


循环逐渐转到最终的viewrport坐标/大小。 实现您的时间和FPS要求


glortho(最终视口x,y和大小)
glcalllist(我的显示列表)
给予

我希望你能得到一般的想法。 很少有其他方法可以实现这一点,但我发现最容易理解的方法是glortho。