算法:如何使用鼠标缩放(OpenGL)

7

我有一个使用左上坐标系的OpenGL场景。当我使用glScale进行缩放时,它会从左上角的(0,0)处开始缩放。我希望它从鼠标坐标(相对于OGL框架)开始缩放。这该如何实现? 谢谢。

2个回答

10

我认为这可以分为四个步骤:

  1. 使用你的窗口系统(例如GLUT或SDL)提供的功能找到鼠标的x和y坐标,并使用gluUnProject获取与这些窗口坐标对应的对象坐标。
  2. 通过平移(x,y,0)将原点放置在这些坐标上。
  3. 按照你所需的向量(i,j,k)进行缩放。
  4. 通过平移(-x,-y,0)将原点放回左上角。

3
我使用glortho实现了平滑的缩放效果。我的解决方案的框架如下:
glortho(初始视口x,y和大小) glcalllist(我的显示列表) 渲染 。 。 循环逐渐到达最终视口坐标/大小。实现您的时间和FPS要求。 。 。 glortho(最终视口x,y和大小) glcalllist(我的显示列表) 渲染
希望您能理解这个基本思路。还有其他方法可以实现此目的,但我认为glortho是最容易理解的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接