放大鼠标的算法(OpenGL)

时间:2010-06-06 03:14:44

标签: c++ c opengl

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

2 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:3)

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

glortho(初始视口x,y& size)
glcalllist(我的显示列表)
渲染


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


glortho(最终视口x,y& size)
glcalllist(我的显示列表)
渲染

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